2017-09-02 60 views
1

在「舊」世界中,我將定義一個AssemblyProductAttributeAssemblyTrademarkAttribute,它們將在Windows資源管理器中的文件propeties中顯示爲「產品名稱」和「法律商標」 。如何使用新的csproj構建系統在csproj中定義AssemblyProduct

在Visual Studio 2017中用於netstandard項目的新簡化msbuild系統中,首選的方法是定義所有這些程序集級別屬性in the csproj directly並讓msbuild生成實際屬性。

但似乎沒有辦法在csproj中定義「產品名稱」和「法律商標」。或者在那裏? This msbuild target似乎暗示它應該在AssemblyProductAttribute的底層工作。

我該如何添加這兩件事?

Udapte: 好,所以對於AssemblyProductAttribute可以寫入<Product>Foo</Product>右轉入的csproj文件。但AssemblyTrademarkAttribute呢?

+0

僅僅因爲他們向IDE添加了一個屬性頁面並不是首選的方式。特別是對於我想象的移植舊項目的程序員而言。在代碼中使用具有屬性的舊樣式仍可使用,您可以在任何位置放置[assembly:AssemblyTrademark(「foobar」)]。 –

+0

我認爲這是首選方法,因爲當你在代碼中定義屬性然後使用該屬性頁面時,你會得到一個關於重複屬性的編譯器錯誤。在VS的早期版本中,這修改了代碼中的屬性(AssemblyInfo.cs),但現在不再了。 – bitbonk

+0

人們總是可以創建一個新的cs文件並將組件屬性放入其中,所以它並不重要。雖然可以使用屬性並定義單個導入的msbuild文件來爲所有項目設置值(即使是跨越混合的f#+ c#解決方案),但msbuild集成的版本更好, –

回答

2

您可以添加程序集屬性尚未通過這些目標發射項目:

<ItemGroup> 
    <AssemblyAttribute Include="System.Reflection.AssemblyTrademarkAttribute"> 
    <_Parameter1>My Trademark</_Parameter1> 
    </AssemblyAttribute> 
</ItemGroup> 

一個例子可以看出here它如何被用來生成InternalsVisibleTo屬性。