310 votes

Équivalent à AssemblyInfo dans dotnet core / csproj

Depuis dotnet core déplacé vers l' .csproj format il y a une nouvelle générée automatiquement MyProject.AssemblyInfo.cs qui contiennent entre autres.

[assembly: AssemblyCompany("MyProject")]
[assembly: AssemblyVersion("1.0.0.0")]

Notez que cette fonction est automatiquement régénéré à chaque génération. Auparavant, le fichier a été trouvé dans les /obj/ répertoire, maintenant, il semble être seulement dans la mémoire que le fichier ne peut être trouvé sur le disque et en cliquant sur le message d'erreur ne pas ouvrir n'importe quel fichier.

C'est le message d'erreur: enter image description here

Depuis qu'ils sont définis là, je ne peux pas définir moi-même dans le classique, AssemblyInfo.cs.

Où et comment puis-je définir la Société et la Version d'un projet?

412voto

natemcmaster Points 13402

Comme vous l'avez déjà remarqué, vous pouvez contrôler la plupart de ces paramètres .csproj.

Si vous préférez garder ces AssemblyInfo.cs, vous pouvez désactiver l'auto-généré à l'assemblée attributs.

<PropertyGroup>
   <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup> 

Si vous voulez voir ce qui se passe sous le capot, la caisse de Microsoft.NET.GenerateAssemblyInfo.les cibles à l'intérieur de Microsoft.NET.Sdk.

167voto

phq Points 1851

Ces paramètres a été déplacée dans le .fichier csproj.

Par défaut, ils ne le montrent pas, mais vous pouvez découvrir à partir de Visual Studio 2017 dans les propriétés du projet Package tab.

Project properties, tab Package

Une fois enregistrées, ces valeurs peuvent être trouvés en MyProject.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net461</TargetFramework>
    <Version>1.2.3.4</Version>
    <Authors>Author 1</Authors>
    <Company>Company XYZ</Company>
    <Product>Product 2</Product>
    <PackageId>MyApp</PackageId>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
    <FileVersion>3.0.0.0</FileVersion>
    <NeutralLanguage>en</NeutralLanguage>
    <Description>Description here</Description>
    <Copyright>Copyright</Copyright>
    <PackageLicenseUrl>License URL</PackageLicenseUrl>
    <PackageProjectUrl>Project URL</PackageProjectUrl>
    <PackageIconUrl>Icon URL</PackageIconUrl>
    <RepositoryUrl>Repo URL</RepositoryUrl>
    <RepositoryType>Repo type</RepositoryType>
    <PackageTags>Tags</PackageTags>
    <PackageReleaseNotes>Release</PackageReleaseNotes>
  </PropertyGroup>

Dans l'explorateur de fichier de propriétés de l'onglet informations, FileVersion est indiqué que "la Version de Fichier" et Version apparaît en tant que "version du Produit"

150voto

pfx Points 5000

Je ne les suivants: pour mon .NET Standard 2.0 projets.

Créer un Directory.Build.props le fichier (par exemple à la racine de votre repo) et déplacer les propriétés d'être partagée à partir de l' .csproj le fichier de ce fichier.

MSBuild ramasser automatiquement et de les appliquer à l'générée automatiquement AssemblyInfo.cs.

Ils ont aussi appliqué pour le package nuget lors de la construction de l'un avec l' dotnet pack ou via l'INTERFACE utilisateur de Visual Studio 2017.

Voir https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build

68voto

NightOwl888 Points 4622

Vous pouvez toujours ajouter votre propre AssemblyInfo.cs, ce qui est pratique pour InternalsVisibleToAttribute, CLSCompliantAttribute et d'autres qui ne sont pas générées automatiquement.

L'Ajout De AssemblyInfo.cs à un Projet

  1. Dans l'Explorateur de solutions, cliquez-droit sur <project name> > Add > New Folder.

Add New Folder

  1. Nommez le dossier "Propriétés".

Name folder Properties

  1. Droite cliquez sur "Propriétés" dans le dossier, et cliquez sur Add > New Item....

Add New Item

  1. Sélectionnez "Classe" et le nom "AssemblyInfo.cs".

Name file AssemblyInfo.cs

La Suppression De L'Auto-Générés Attributs

Si vous souhaitez déplacer vos attributs retour à AssemblyInfo.cs au lieu de devoir les auto-généré, vous pouvez les supprimer dans MSBuild comme natemcmaster l'a souligné dans sa réponse.

8voto

T.S. Points 3446

Je veux prolonger cette rubrique/réponses avec le suivant. Comme quelqu'un l'a mentionné, cette auto-généré AssemblyInfo peut être un obstacle pour les outils externes. Dans mon cas, à l'aide de FinalBuilder, j'ai eu un problème que AssemblyInfo n'était pas d'obtenir des mises à jour par l'action de construire. Apparemment, FinalBuilder s'appuie sur ~proj le fichier pour rechercher l'emplacement de la AssemblyInfo. J'ai pensé, il était à la recherche de n'importe où, en vertu de dossier de projet. Pas de. Donc, la modification de cette

<PropertyGroup>
   <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup> 

a seulement le travail, il a permis d'assemblage personnalisé info si construit par VS IDE/MS Construire. Mais j'avais besoin de FinalBuilder le faire sans trop de manuel de manipulations à l'assemblée info fichier. J'avais besoin de satisfaire tous les programmes, MSBuild/VS et FinalBuilder.

J'ai résolu ce problème en ajoutant une entrée dans l'existant, ItemGroup

<ItemGroup>
   <Compile Remove="Common\**" />
   <Content Remove="Common\**" />
   <EmbeddedResource Remove="Common\**" />
   <None Remove="Common\**" />
   <!-- new added item -->
   <None Include="Properties\AssemblyInfo.cs" />
</ItemGroup>

Maintenant, ayant de ce point, FinalBuilder trouve l'emplacement de AssemblyInfo et modifie le fichier. Si l'action None permet MSBuild/DevEnv ignorer cette entrée et ne plus signaler une erreur basée sur Compile action qui vient habituellement avec de l'Assemblée Info entrée en proj fichiers.

C:\Program Files\dotnet\sdk\2.0.2\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.DefaultItems.cibles(263,5): erreur : Duplicate 'Compiler' éléments ont été inclus. L' .NET SDK inclut 'Compiler' éléments à partir de votre répertoire de projet par défaut. Vous pouvez soit supprimer ces éléments de votre fichier de projet, ou de définir la "EnableDefaultCompileItems' propriété 'false' si vous voulez inclure explicitement dans votre fichier de projet. Pour plus d'informations, voir https://aka.ms/sdkimplicititems. Les éléments en double: "AssemblyInfo.cs'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X