是否有可能自动设置“复制到输出目录”建立在Visual Studio 2010中的文件时?(Is i

2019-07-19 05:10发布

我最近开始LuaInterface玩弄得到Lua脚本在我的C#程序的工作。 为了便于在Visual Studio中创建Lua脚本,我安装了一个Lua语法高亮插件并创建了一个项目模板,这样我可以在项目文件,并选择“新建用品 - > Lua的脚本”通过右键单击新的脚本。 这工作得很好。

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

有没有办法来改变这个选项的默认设置? 现在,它默认为“不要复制”。 我只能找到另外一个问题问基本上是相同的事情,但只要有唯一的答案提出了一个生成后事件复制所有文件具有相同的扩展定义的位置。 我真的不希望这样做,因为目标位置可能会改变,或者可以添加更多的目标(并需要额外的事件?),我希望能够改变在每个文件的基础设置。

这仅仅是一个方便的问题,因为我可以手动更改选项为每个文件,但已经能够在过程的其余部分自动完成,我希望我能和自动化这一个最后的细节。

Answer 1:

你应该能够在添加IWizard参考模板,当你在文件点击ok这将运行- >添加窗口。 你需要组装和类型添加到vstemplate文件。

实施RunFinished或可能ProjectItemFinishedGenerating方法。 然后,您可以使用EnvDTE由Visual Studio暴露对象来操作使用标准的Visual Studio扩展模型解决方案的任何项目..

以下代码片段 (来自开源T4工具箱)示出了如何设置这个属性。

    /// <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);
        }    
    }


文章来源: Is it possible to automatically set “Copy to Output Directory” when creating files in Visual Studio 2010?