2017-09-02 3 views
1

In der „alten“ Welt zu definieren, würde ich ein AssemblyProductAttribute und AssemblyTrademarkAttribute definiert, würde die Show als „Produktname“ und „Legal Marken“ in der Datei propeties in Windows Explorer .Wie AssemblyProduct in csproj mit dem neuen csproj Build-System

Im neuen msbuild System vereinfacht, die in Visual Studio 2017 netstandard Projekte verwendet wird, ist die bevorzugte Art und Weise all diejenigen Baugruppenebene Attribute in the csproj directly zu definieren und erzeugen, um die tatsächlichen msbuild Attribute lassen.

Aber es scheint, dass es keine Möglichkeit gibt, "Produktname" und "Legal trademarks" in csproj zu definieren. Oder ist es da? This msbuild target scheint darauf hinzuweisen, dass es zumindest für die AssemblyProductAttribute funktionieren sollte.

Wie kann ich diese beiden Dinge hinzufügen?

Udapte: Ok, also für die Assembly in <Product>Foo</Product> rechts in die csproj Datei schreiben kann. Aber was ist mit der AssemblyTrademarkAttribute?

+0

Nur weil sie der IDE eine Eigenschaftsseite hinzugefügt haben, ist dies nicht der bevorzugte Weg. Vor allem nicht für Programmierer, die alte Projekte portieren. Wenn Sie den alten Stil mit einem Attribut im Code verwenden, können Sie [assembly: AssemblyTrademark ("foobar")] an einer beliebigen Stelle platzieren. –

+0

Ich nahm an, dass dies der bevorzugte Weg ist, denn wenn Sie das Attribut im Code definieren und dann diese Eigenschaftenseite verwenden, erhalten Sie einen Compilerfehler über doppelte Attribute. In früheren Versionen von VS wurden die Attribute im Code (AssemblyInfo.cs) geändert, aber nicht mehr. – bitbonk

+0

Man kann immer eine neue CS-Datei erstellen und Assemblierungsattribute einfügen, so dass es nicht wirklich wichtig ist. Die Msbuild-integrierte Version ist jedoch schöner, da Sie Eigenschaften verwenden und einzelne importierte Msbuild-Dateien definieren können, um Werte für alle Projekte usw. festzulegen (auch für das Überqueren von gemischten f # + C# -Lösungen). –

Antwort

2

Sie können ein Element für die Montage Attribute, die nicht bereits durch diese Ziele emittiert hinzu:

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

Ein Beispiel here, wie zu sehen ist es InternalsVisibleTo Attribute zu erzeugen, verwendet werden können.