Depuis que le noyau dotnet est revenu au .csproj
format, il existe un nouveau générateur automatique MyProject.AssemblyInfo.cs
qui contient entre autres.
[assembly: AssemblyCompany("MyProject")]
[assembly: AssemblyVersion("1.0.0.0")]
Notez que cela est automatiquement régénéré à chaque build. Auparavant, le fichier était trouvé dans le répertoire / obj /, il semble maintenant être uniquement en mémoire car le fichier est introuvable sur le disque et cliquer sur le message d'erreur n'ouvre aucun fichier.
Puisqu'ils y sont définis, je ne peux pas les définir moi-même dans le classique AssemblyInfo.cs
.
Où / comment puis-je définir la société et la version d'un projet?
Réponses:
Comme vous l'avez déjà remarqué, vous pouvez contrôler la plupart de ces paramètres dans .csproj.
Si vous préférez les conserver dans AssemblyInfo.cs, vous pouvez désactiver les attributs d'assembly générés automatiquement.
Si vous voulez voir ce qui se passe sous le capot, consultez Microsoft.NET.GenerateAssemblyInfo.targets à l' intérieur de Microsoft.NET.Sdk.
la source
Ces paramètres ont été déplacés dans le fichier .csproj.
Par défaut, ils n'apparaissent pas, mais vous pouvez les découvrir à partir de Visual Studio 2017 dans l'
Package
onglet des propriétés du projet .Une fois enregistrées, ces valeurs peuvent être trouvées dans
MyProject.csproj
Dans l'onglet d'informations sur les propriétés de l'explorateur de fichiers,
FileVersion
s'affiche comme "Version du fichier" etVersion
comme "Version du produit"la source
Class Library (.NET Standard)
. Tu sais pourquoi? J'utilise la version 15.1, version 26403.7, Community Edition.Je fais ce qui suit pour mes projets .NET Standard 2.0.
Créez un
Directory.Build.props
fichier (par exemple à la racine de votre référentiel) et déplacez les propriétés à partager du.csproj
fichier vers ce fichier.MSBuild le récupérera automatiquement et les appliquera à la génération automatique
AssemblyInfo.cs
.Ils sont également appliqués au package nuget lors de la création d'un avec
dotnet pack
ou via l'interface utilisateur dans Visual Studio 2017.Voir https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build
la source
Vous pouvez toujours ajouter votre propre AssemblyInfo.cs , qui est utile pour
InternalsVisibleToAttribute
,CLSCompliantAttribute
et d'autres qui ne sont pas générés automatiquement.Ajout de AssemblyInfo.cs à un projet
<project name> > Add > New Folder
.Add > New Item...
.Suppression des attributs générés automatiquement
Si vous souhaitez déplacer vos attributs vers AssemblyInfo.cs au lieu de les générer automatiquement, vous pouvez les supprimer dans MSBuild comme natemcmaster l'a souligné dans sa réponse .
la source
En ajoutant à la réponse de NightOwl888, vous pouvez aller plus loin et ajouter une
AssemblyInfo
classe plutôt qu'une simple classe:la source
Je souhaite étendre ce sujet / réponses avec ce qui suit. Comme quelqu'un l'a mentionné, cet AssemblyInfo généré automatiquement peut être un obstacle pour les outils externes. Dans mon cas, en utilisant FinalBuilder , j'ai eu un problème que AssemblyInfo n'était pas mis à jour par l'action de génération. Apparemment, FinalBuilder s'appuie sur un
~proj
fichier pour trouver l'emplacement de AssemblyInfo . Je pensais qu'il cherchait n'importe où dans le dossier du projet. Non. Donc, changer çan'a fait que la moitié du travail, il a permis des informations d'assemblage personnalisées si elles étaient construites par VS IDE / MS Build. Mais j'avais besoin que FinalBuilder le fasse aussi sans manipulations manuelles dans le fichier d'informations d'assemblage. J'avais besoin de satisfaire tous les programmes, MSBuild / VS et FinalBuilder.
J'ai résolu cela en ajoutant une entrée à l'existant
ItemGroup
Maintenant, ayant cet élément, FinalBuilder trouve l'emplacement de AssemblyInfo et modifie le fichier. Tandis que l'action
None
permet à MSBuild / DevEnv d'ignorer cette entrée et de ne plus signaler une erreur basée sur l'Compile
action qui est généralement fournie avec l'entrée Infos d'assemblage dans lesproj
fichiers.la source