相当于dotnet core / csproj中的AssemblyInfo

由于dotnet核心移回到.csproj格式有一个新的自动生成MyProject.AssemblyInfo.cs其中包含。

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

请注意 ,这是每个构build自动重新生成的。 以前该文件是在/ obj /目录中find的,现在看来只能在内存中,因为在磁盘上找不到该文件,并且单击该错误消息不会打开任何文件。

这是错误信息: 在这里输入图像说明

既然它们是在那里定义的,我不能在经典的AssemblyInfo.cs自己定义它们。

在哪里/如何定义项目的公司和版本?

正如您已经注意到的,您可以在.csproj中控制大部分这些设置。

如果您希望将这些保存在AssemblyInfo.cs中,可以closures自动生成的程序集属性。

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

如果你想看看底下发生了什么,请检查Microsoft.NET.Sdk中的Microsoft.NET.GenerateAssemblyInfo.targets。

这些设置已移到.csproj文件中。

默认情况下,它们不会显示,但是您可以从Visual Studio 2017的项目属性“ Package选项卡中find它们。

项目属性,选项卡包

一旦保存,这些值可以在MyProject.csprojfind

 <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> 

在文件资源pipe理器属性信息选项卡中, FileVersion显示为“文件版本”, Version显示为“产品版本”

您可以随时添加您自己的AssemblyInfo.cs,这对于InternalsVisibleToAttributeCLSCompliantAttribute和其他不会自动生成的内容来说非常方便。

在解决scheme资源pipe理器中,右键单击<project name> > Add > New Folder 。 命名文件夹“属性”。 然后右键单击属性文件夹并添加一个名为AssemblyInfo.cs的新代码文件。

Visual Studio甚至检测到名为“属性”的文件夹,并给你一个扳手图标。

我想扩展这个主题/答案与以下。 正如有人提到的,这个自动生成的AssemblyInfo可能是外部工具的障碍。 在我的情况下,使用FinalBuilder ,我有一个问题, AssemblyInfo没有得到更新的构build行动。 显然, FinalBuilder依赖于~proj文件来查找AssemblyInfo的位置。 我想,它正在寻找项目文件夹下的任何地方。 所以,改变这一点

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

只有这个工作,它允许自定义组装信息,如果由VS IDE / MS构build。 但是我需要FinalBuilder也没有手动操作汇编信息文件。 我需要满足所有的程序,MSBuild / VS和FinalBuilder。

我通过添加一个条目到现有的ItemGroup来解决这个问题

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

现在,有了这个项目, FinalBuilderfindAssemblyInfo的位置并修改文件。 虽然行动None允许MSBuild / DevEnv忽略此条目,并不再报告基于Compile操作,通常伴随着程序集文件中的程序集信息条目的错误。

C:\ Program Files \ dotnet \ sdk \ 2.0.2 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.Sdk.DefaultItems.targets(263,5):错误:包含重复的“编译”项目。 .NET SDK默认包含项目目录中的“编译”项目。 你可以从你的项目文件中删除这些项目,或者如果你想明确地将它们包含在你的项目文件中,将'EnableDefaultCompileItems'属性设置为'false'。 有关更多信息,请参阅https://aka.ms/sdkimplicititems 。 重复的项目是:“AssemblyInfo.cs”