相当于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.csproj
find
<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,这对于InternalsVisibleToAttribute
, CLSCompliantAttribute
和其他不会自动生成的内容来说非常方便。
在解决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”
- .NET核心中没有AppDomain! 为什么?
- ASP.NET 5(vNext) – 获取configuration设置
- Project.json定义dnx451 vs .dotnet(4.51)
- 项目的默认XML名称空间必须是MSBuild XML名称空间
- 迷失在版本和工具中:.NET核心,核心工具,dotnet核心CLI,
- 为什么引用程序集中的DbParameterCollection抽象中有三个属性,否则是虚拟的?
- Visual Studio 2017安装打破了Visual Studio 2015 ASP.NET核心项目
- Homebrew拒绝链接OpenSSL
- 如何使用.Net Core开发跨平台的gui应用程序