2017-04-07 148 views
1

在Visual Studio C++項目中,我可以定義自定義構建操作和相應的屬性規則(請參閱MSBuild文件夾下的cl.xml)。我如何在C#項目中爲自定義構建操作創建這樣的規則?在MSBuild文件夾下有一個文件Microsoft.CSharp.CurrentVersion.targets,它參考CSharp.ProjectItemsSchema.xaml,CSharp.xamlCSharp.BrowseObject.xaml,它看起來非常像我需要的定義。使用procmon我可以看到這些文件根本不被訪問。什麼是定義自定義構建操作的正確方法?Visual Studio C#項目中的自定義構建操作屬性

爲了澄清我想在這裏完成的是一個例子:

  1. 我添加圖像文件(巴紐)到項目
  2. 我有一種特殊的圖像資源「編譯器轉換的圖像(此編譯器是使用msbuild目標定義的)
  3. 我想更改圖像文件的屬性(例如目標分辨率,格式等)。在C++項目中,我可以爲此打開文件屬性對話框。 這些屬性被保存爲MSBuild項目元數據並被轉發到MSBuild目標。

所得到的項目文件將包含的數據是這樣的:

<ItemGroup> 
    <MyImageContent Include="Image.png"> 
     <OutputName>MyImage.png</OutputName> 
     <TargetResX>512</TargetResX> 
     <TargetResY>256</TargetResY> 
    </MyImageContent> 
    </ItemGroup> 

這額外的元數據可以很容易地通過一個自定義的MSBuild目標使用。到目前爲止,我知道該怎麼做。

但是:在VC++項目中,可以在由Visual Studio提供的屬性窗口中輕鬆編輯此元數據。 Visual Studio使用的定義來自與我提到的cl.xml類似的規則xml文件。我該如何在C#項目中完成此任務?

+0

這個問題呢?您能否讓我知道關於這個問題的最新信息? –

+0

@ Leo-MSFT:我還沒有任何其他信息。解決此問題的唯一方法可能是寫一個VS擴展或創建一個自定義的[項目系統](https://github.com/Microsoft/VSProjectSystem)。我沒有時間來實施這些。或者您可以將C++項目添加到您的解決方案僅用於此目的。 – alerosmile

回答

0

什麼是定義自定義構建操作的正確方法?

可以使用MSBuild Targetsimported .targets file定義自定義建立在項目文件的操作。

1.I圖像文件(巴紐)添加到項目 對於此版本的動作,你可以在目標使用copy task到圖像文件複製到項目文件夾:

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

2.I有一個特殊的圖像資源「編譯器(使用目標的msbuild該編譯器定義)轉換的圖像

對於此構建操作,可以導入該msbuild目標。

3.我想改變圖像文件的屬性。

在C#項目,該圖像的性質也保存爲MSBuild的項目的元數據並將其轉發到目標的MSBuild。

enter image description here

更新:

  • 在一個VC項目此元數據可以在由Visual Studio提供的屬性窗口很容易地進行編輯。 Visual Studio使用的定義來自與我提到的cl.xml類似的規則xml文件。我該如何在C#項目中完成此任務?
  • 據我知道,我們不能讓自定義的項目有哪些是在屬性窗口中編輯額外的元數據。這僅適用於C++和C++/CLI項目。 .NET項目(C#和Visual Basic)沒有那麼多的選項需要調整。有關更多詳細信息,請參閱Sharing Project Properties in Visual C++

    希望這可以幫助你。

    +0

    我編輯了我的問題以提供更多關於我在尋找的信息。 – alerosmile

    +0

    @alerosmile,如果我理解正確,在C#項目中,元數據也可以在Visual Studio提供的屬性窗口中輕鬆編輯。您可以參考上述答案中圖像的屬性窗口。如果理解不正確,請免費告知我,您可以提交新的問題以獲得特別關注。 –

    +0

    我的自定義項目有額外的元數據,我想在屬性窗口中進行編輯。 – alerosmile

    相關問題