在 Visual Studio 2010 中创建文件时是否可以自动设置“复制到输出目录”?

2023-11-23

我最近开始尝试使用 LuaInterface 来让 Lua 脚本在我的 C# 程序中工作。为了在 Visual Studio 中轻松创建 Lua 脚本,我安装了 Lua 语法突出显示插件并创建了一个项目模板,以便我可以通过右键单击项目文件并选择“新建项目 -> Lua 脚本”来创建新脚本。这非常有效。

为了让程序找到脚本,需要将它们放置在构建位置的同一目录(或子目录)中。这正是我想要的位置,但为了做到这一点,我必须更改我创建的每个新文件的“复制到输出目录”设置。

有没有办法更改此选项的默认设置?现在它默认为“不复制”。我只能找到还有一个问题询问本质上是相同的事情,但那里提供的唯一答案建议进行构建后事件,将具有相同扩展名的所有文件复制到定义的位置。我真的不想这样做,因为目标目的地可能会发生变化,或者可能会添加更多目标(并且需要其他事件?),并且我希望能够在每个文件的基础上更改该设置。

这只是一个便利问题,因为我可以为每个文件手动更改该选项,但在能够自动化其余过程后,我希望我也可以自动化这最后一个细节。


You should be able to add an IWizard reference to the template, this will run when you click ok in the File -> Add window. You'll need to add the assembly and type to the vstemplate file.

实施RunFinished或者可能是ProjectItemFinishedGenerating方法。然后您可以使用EnvDTEVisual Studio 公开的对象,用于使用标准 Visual Studio 可扩展性模型操作解决方案中的任何项目。

下面的代码片段(来自开源 T4 Toolbox)显示了如何设置此属性。

    /// <summary>
    /// Sets the known properties for the <see cref="ProjectItem"/> to be added to solution.
    /// </summary>
    /// <param name="projectItem">
    /// A <see cref="ProjectItem"/> that represents the generated item in the solution.
    /// </param>        
    /// <param name="output">
    /// An <see cref="OutputFile"/> that holds metadata about the <see cref="ProjectItem"/> to be added to the solution.
    /// </param>
    private static void SetProjectItemProperties(ProjectItem projectItem, OutputFile output)
    {
        // Set "Build Action" property
        if (!string.IsNullOrEmpty(output.BuildAction))
        {
            ICollection<string> buildActions = GetAvailableBuildActions(projectItem);               
            if (!buildActions.Contains(output.BuildAction))
            {
                throw new TransformationException(
                    string.Format(CultureInfo.CurrentCulture, "Build Action {0} is not supported for {1}", output.BuildAction, projectItem.Name));
            }

            SetPropertyValue(projectItem, "ItemType", output.BuildAction);
        }

        // Set "Copy to Output Directory" property
        if (output.CopyToOutputDirectory != default(CopyToOutputDirectory))
        {
            SetPropertyValue(projectItem, "CopyToOutputDirectory", (int)output.CopyToOutputDirectory);
        }

        // Set "Custom Tool" property
        if (!string.IsNullOrEmpty(output.CustomTool))
        {
            SetPropertyValue(projectItem, "CustomTool", output.CustomTool);
        }

        // Set "Custom Tool Namespace" property
        if (!string.IsNullOrEmpty(output.CustomToolNamespace))
        {
            SetPropertyValue(projectItem, "CustomToolNamespace", output.CustomToolNamespace);
        }    
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Visual Studio 2010 中创建文件时是否可以自动设置“复制到输出目录”? 的相关文章

随机推荐

  • C# 理论:将 JMP 写入 asm 中的 codecave

    假设我已经使用以下命令分配了放置我的 codecave 的地址VirtualAllocEx 它返回地址 我使用以下命令将代码写入该地址WriteProcessMemory 这是问题 如何编写跳转到我的 Codecave 的跳转 我知道跳跃开
  • 按钮显示内联CSS

    我有以下 CSS 和 HTML http jsfiddle net 47w0h73r 6 one padding 20px background f00 two padding 20px background 00f a button fo
  • Jenkins 主/从配置

    我一直在阅读有关 Jenkins 主 从配置的信息 但我仍然有一些问题 是不是从机 Jenkins 并没有像主机 Jenkins 那样实际安装和启动 我假设我会以相同的方式安装一个主詹金斯和另一个从詹金斯 然后主詹金斯将控制从詹金斯 例如通
  • Visual Studio 2015 输出窗口丢失

    缺少显示 Visual Studio 中所有构建消息的输出窗口 我无法使用视图菜单将其恢复 我尝试了安全模式和诊断模式 然后重新启动了一切 怎样才能把窗户找回来 去引用MSDN 在 Visual Studio Express 版本中 输出
  • Rtti 访问复杂数据结构中的字段和属性

    正如已经讨论过的Delphi 2010 中的 Rtti 数据操作和一致性可以通过使用一对 TRttiField 和实例指针访问成员来达到原始数据和 rtti 值之间的一致性 对于仅具有基本成员类型 例如整数或字符串 的简单类 这将非常容易
  • 具有属性包装器的不可用属性

    我正在开发一个支持 iOS 14 及更高版本的应用程序 但我想使用一些 SwiftUI 3 属性包装器 例如 FocusState 我该如何解决这个问题Stored properties cannot be marked potential
  • D3.js v3 到 v4 刷机改动

    我希望从 d3v3 迁移到 d3v4 特别是我在迁移画笔时遇到困难 有人可以查看下面的链接并让我知道更改吗 http bl ocks org zanarmstrong ddff7cd0b1220bc68a58 我发现了一些变化 d3 tim
  • 为 MAUI Visual Studio 2022 安装 Android 工作负载时出现问题

    我已按照以下说明安装了 Visual Studio 2022 Preview 4 1 https learn microsoft com en us dotnet maui get started installation 我启动了一个新的
  • 如何检查输入是否为二进制格式(1 和 0)?

    我已经制作了一个程序 但是如果用户输入不是二进制格式 我想添加一个例外 我已经尝试了很多次添加例外 但似乎无法让它工作 下面是程序代码 如果有人可以提供帮助 我将不胜感激 import time error True n 0 while n
  • makefile 中的错误:_start 的多个定义

    我尝试编写一个makefile CC g LD ld CFLAGS Wall std c 0x O3 LDFLAGS lgsl lgslcblas lpthread SOURCES main cpp OBJECTS SOURCES cpp
  • 使用 jdbc 和 oracle 驱动程序时结果集的存储位置

    一旦我将jdbc与oracle驱动程序一起使用并运行select查询 查询的结果是否存储在oracle内存或文件系统或临时表的服务器中 一旦我通过获取下一行来运行下一个方法 它是否会从 oracle 服务器内存加载到 jvm 内存 如果我将
  • 如何使用 Jest 和 Enzyme 模拟 React 组件生命周期方法?

    完整 DOM 渲染的 Enzyme 文档here包含以下使用 Sinon 监视生命周期方法的示例 describe
  • ffmpeg:连接视频和图像

    我有 2 个视频 相同的分辨率 相同的编码 文件 我想要连接它们 并且我想在它们之间插入一些文本 3 秒 作为分割器 我在 Windows 上使用 ffmpeg 执行此操作 我感兴趣的可选想法 避免在此过程中重新编码视频 在每个部分的交叉处
  • Presto SQL:使用作为查询结果的时区字符串更改时区不起作用

    我通过 Mode Analytics Platform 连接到 AWS Athena 并使用其查询引擎 基于 Presto 0 172 查询表 这张表public zones时区信息存储在名为的列中time zone在我感兴趣的一些区域 存
  • 使用 OpenCV 检测灰色物体

    我想使用 OpenCV 检测一个与场景中其他元素明显不同的对象 因为它是灰色的 这很好 因为我可以使用 R G B 运行测试 并且它允许独立于亮度 但逐像素执行速度很慢 有没有更快的方法来检测灰色的东西 也许有一个 OpenCV 方法可以进
  • xamarin Forms:根据键盘高度向上移动视图

    我正在使用 xamarin 表单 我用xaml设计了一个登录表单页面 我想在键盘出现时向上移动登录表单视图 以便文本字段和登录按钮在两个平台上都可见Android and IOS 如何计算键盘高度并通过动态计算键盘高度将登录表单视图向上移动
  • perl文档中哪里提到了0.0001、0.00001打印差异?

    perl 文档中的哪里提到了何时将在这里获得指数格式 perl wle print for 0 001 0 0001 0 00001 1 00001 0 001 0 0001 1e 05 1 00001 No I am not谈论print
  • Android中使用Content Provider批量删除项目

    我正在尝试批量删除表中的某些项目 String ids 1 2 3 mContentResolver delete uri MyTables ID ids 但是我不断收到以下错误 java lang IllegalArgumentExcep
  • Android viewPager 图片从右向左滑动

    我想添加图像幻灯片 但无法使其从右向左滑动 适用于阿拉伯语或希伯来语等语言 我检查了stackoverflow上的几乎所有回复 但找不到明确的解决方案 我在这里写下整个代码 请写清楚 我不是专业人士 主要活动 package com man
  • 在 Visual Studio 2010 中创建文件时是否可以自动设置“复制到输出目录”?

    我最近开始尝试使用 LuaInterface 来让 Lua 脚本在我的 C 程序中工作 为了在 Visual Studio 中轻松创建 Lua 脚本 我安装了 Lua 语法突出显示插件并创建了一个项目模板 以便我可以通过右键单击项目文件并选