Da der Dotnet-Kern wieder in das .csproj
Format zurückgekehrt ist, gibt es einen neuen automatisch generierten Kern, der MyProject.AssemblyInfo.cs
unter anderem enthält.
[assembly: AssemblyCompany("MyProject")]
[assembly: AssemblyVersion("1.0.0.0")]
Beachten Sie, dass dies bei jedem Build automatisch neu generiert wird. Früher wurde die Datei im Verzeichnis / obj / gefunden, jetzt scheint sie sich nur im Speicher zu befinden, da die Datei nicht auf der Festplatte gefunden werden kann und durch Klicken auf die Fehlermeldung keine Datei geöffnet wird.
Da sie dort definiert sind, kann ich sie im Klassischen nicht selbst definieren AssemblyInfo.cs
.
Wo / wie kann ich das Unternehmen und die Version eines Projekts definieren?
Antworten:
Wie Sie bereits bemerkt haben, können Sie die meisten dieser Einstellungen in .csproj steuern.
Wenn Sie diese lieber in AssemblyInfo.cs behalten möchten, können Sie automatisch generierte Assemblyattribute deaktivieren.
Wenn Sie sehen möchten, was unter der Haube vor sich geht, überprüfen Sie Microsoft.NET.GenerateAssemblyInfo.targets in Microsoft.NET.Sdk.
quelle
Diese Einstellungen wurden in die .csproj-Datei verschoben.
Standardmäßig werden sie nicht angezeigt, aber Sie können sie in Visual Studio 2017 auf der
Package
Registerkarte Projekteigenschaften erkennen .Nach dem Speichern finden Sie diese Werte in
MyProject.csproj
Auf der Registerkarte mit den Informationen zu den Eigenschaften des Datei-Explorers
FileVersion
wird "Dateiversion" undVersion
"Produktversion" angezeigt.quelle
Class Library (.NET Standard)
. Hast du eine Idee warum? Ich verwende Version 15.1, Release 26403.7, Community Edition.Ich mache Folgendes für meine .NET Standard 2.0-Projekte.
Erstellen Sie eine
Directory.Build.props
Datei (z. B. im Stammverzeichnis Ihres Repos) und verschieben Sie die freizugebenden Eigenschaften aus der.csproj
Datei in diese Datei.MSBuild nimmt es automatisch auf und wendet es auf die automatisch generierte an
AssemblyInfo.cs
.Sie werden auch auf das Nuget-Paket angewendet, wenn Sie eines mit
dotnet pack
oder über die Benutzeroberfläche in Visual Studio 2017 erstellen .Siehe https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build
quelle
Sie können jederzeit Ihre eigenen AssemblyInfo.cs hinzufügen , was praktisch ist
InternalsVisibleToAttribute
,CLSCompliantAttribute
und andere, die nicht automatisch generiert werden.Hinzufügen von AssemblyInfo.cs zu einem Projekt
<project name> > Add > New Folder
.Add > New Item...
.Automatisch generierte Attribute unterdrücken
Wenn Sie Ihre Attribute zurück in AssemblyInfo.cs verschieben möchten, anstatt sie automatisch generieren zu lassen, können Sie sie in MSBuild unterdrücken, wie natemcmaster in seiner Antwort ausgeführt hat .
quelle
Ich möchte dieses Thema / diese Antworten mit folgendem erweitern. Wie bereits erwähnt, kann diese automatisch generierte AssemblyInfo ein Hindernis für die externen Tools sein. In meinem Fall hatte ich mit FinalBuilder ein Problem, dass AssemblyInfo nicht durch eine Build-Aktion aktualisiert wurde. Anscheinend stützt sich FinalBuilder auf die
~proj
Datei, um den Speicherort der AssemblyInfo zu finden . Ich dachte, es würde irgendwo unter dem Projektordner suchen. Also, das ändernhat nur die Hälfte der Arbeit erledigt und benutzerdefinierte Assembly-Informationen zugelassen, wenn diese von VS IDE / MS Build erstellt wurden. Aber ich musste FinalBuilder auch ohne manuelle Manipulationen an der Assembly-Info-Datei ausführen . Ich musste alle Programme, MSBuild / VS und FinalBuilder, erfüllen.
Ich habe dies gelöst, indem ich dem vorhandenen einen Eintrag hinzugefügt habe
ItemGroup
Mit diesem Element findet FinalBuilder den Speicherort von AssemblyInfo und ändert die Datei. Während die Aktion
None
es MSBuild / DevEnv ermöglicht, diesen Eintrag zu ignorieren und keinen Fehler mehr zu melden, der auf derCompile
Aktion basiert , die normalerweise mit dem Eintrag "Assembly Info" inproj
Dateien einhergeht .quelle
Wenn Sie die Antwort von NightOwl888 ergänzen, können Sie noch einen Schritt weiter gehen und eine
AssemblyInfo
Klasse hinzufügen , anstatt nur eine einfache Klasse:quelle