Visual Studio C#项目中的自定义构建操作属性

时间:2017-04-07 17:06:37

标签: c# visual-studio-2015 msbuild

在Visual Studio C ++项目中,我可以定义自定义构建操作和相应的属性规则(请参阅MSBuild文件夹下的)。如何在C#项目中为自定义构建操作创建此类规则?在MSBuild文件夹下有一个文件cl.xml引用Microsoft.CSharp.CurrentVersion.targetsCSharp.ProjectItemsSchema.xamlCSharp.xaml,它们看起来与我需要的定义完全相同。使用procmon我可以看到根本没有访问这些文件。什么是定义自定义构建操作的正确方法?

为了澄清我想要完成的事情,这里有一个例子:

  1. 我将图像文件(.png)添加到项目
  2. 我有一个特殊的图像资源'编译器'转换图像(此编译器使用msbuild目标定义)
  3. 我想更改图像文件的属性(例如目标分辨率,格式等)。在C ++项目中,我可以为此打开文件属性对话框。 这些属性保存为MSBuild项元数据并转发到MSBuild目标。
  4. 生成的项目文件将包含如下数据:

    CSharp.BrowseObject.xaml

    自定义MSBuild目标可以轻松使用此附加元数据。到目前为止,我知道该怎么做。

    但是:在VC ++项目中,可以在Visual Studio提供的属性窗口中轻松编辑此元数据。 Visual Studio使用的定义来自类似于我提到的cl.xml的规则xml文件。如何在C#项目中实现这一目标?

1 个答案:

答案 0 :(得分:0)

  

定义自定义构建操作的正确方法是什么?

您可以使用MSBuild Targetsimported .targets file在项目文件中定义自定义构建操作。

  

1.我将一个图像文件(.png)添加到项目中   对于此构建操作,您可以使用目标中的copy task将映像文件复制到项目文件夹:

    <Target Name="CopyFiles">  
    <Copy  
        SourceFiles="@(MySourceFiles)"  
        DestinationFolder="c:\MyProject\Destination"  
    />  
</Target> 
  

2.我有一个特殊的图像资源&#39;编译器&#39;转换图像(此编译器使用msbuild目标定义)

对于此构建操作,您可以导入该msbuild目标。

  

3.我想更改图像文件的属性。

在C#项目中,图像的属性也会保存为MSBuild项目元数据并转发到MSBuild目标。

enter image description here

更新

  
      
  1. 在VC ++项目中,可以在Visual Studio提供的属性窗口中轻松编辑此元数据。 Visual Studio使用的定义来自类似于我提到的cl.xml的规则xml文件。如何在C#项目中完成此任务?
  2.   

据我所知,我们无法使自定义项目具有可在属性窗口中编辑的其他元数据。这仅适用于C ++和C ++ / CLI项目。 .NET项目(C#和Visual Basic)没有那么多可以调整的选项。您可以参考Sharing Project Properties in Visual C++了解更多详情。

希望这可以帮到你。