hul*_*ist 199 assemblyinfo visual-studio .net-core visual-studio-2017
由于dotnet核心移回到.csproj
格式,因此有一个新的自动生成MyProject.AssemblyInfo.cs
,其中包含.
[assembly: AssemblyCompany("MyProject")]
[assembly: AssemblyVersion("1.0.0.0")]
Run Code Online (Sandbox Code Playgroud)
请注意,每次构建时都会自动重新生成.以前该文件位于/ obj /目录中,现在它似乎只在内存中,因为在磁盘上找不到该文件并且单击错误消息不会打开任何文件.
由于它们在那里定义,我无法在经典中定义它们AssemblyInfo.cs
.
我在哪里/如何定义项目的公司和版本?
nat*_*ter 277
正如您已经注意到的,您可以在.csproj中控制大多数这些设置.
如果您希望将它们保存在AssemblyInfo.cs中,则可以关闭自动生成的程序集属性.
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
如果你想看看幕后发生了什么,请查看Microsoft.NET.Sdk中的Microsoft.NET.GenerateAssemblyInfo.targets.
hul*_*ist 107
这些设置已移至.csproj文件中.
默认情况下,它们不会显示,但您可以在项目属性Package
选项卡中从Visual Studio 2017中发现它们 .
保存后,可以在中找到这些值 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>
Run Code Online (Sandbox Code Playgroud)
在文件资源管理器属性信息选项卡中,FileVersion
显示为"文件版本"并Version
显示为"产品版本"
pfx*_*pfx 89
我为.NET Standard 2.0项目执行以下操作.
创建一个Directory.Build.props
文件(例如,在repo的根目录中),并将要从.csproj
文件共享的属性移动到此文件中.
MSBuild将自动将其拾取并将其应用于自动生成AssemblyInfo.cs
.
dotnet pack
在Visual Studio 2017中使用或通过UI 构建nuget包时,它们也会应用于nuget包.
请参阅https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build
Nig*_*888 46
您可以随时添加自己的AssemblyInfo.cs,它可以派生用InternalsVisibleToAttribute
,也可以添加CLSCompliantAttribute
其他非自动生成的.
<project name> > Add > New Folder
.Add > New Item...
.如果要将属性移回AssemblyInfo.cs而不是自动生成它们,可以在MSBuild中将它们抑制为natemcmaster在其答案中指出的.
添加到 NightOwl888 的答案,您可以更进一步,添加一个AssemblyInfo
类而不仅仅是一个普通类:
我想用以下内容扩展这个主题/答案。正如有人提到的,这个自动生成的AssemblyInfo可能是外部工具的障碍。就我而言,使用FinalBuilder 时,我遇到了一个问题,即构建操作未更新AssemblyInfo。显然,FinalBuilder依赖于~proj
file 来查找AssemblyInfo 的位置。我想,它正在寻找项目文件夹下的任何地方。不。所以,改变这个
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
只完成了一半的工作,如果由 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>
Run Code Online (Sandbox Code Playgroud)
现在,有了这个项目,FinalBuilder 会找到AssemblyInfo 的位置并修改文件。虽然操作None
允许 MSBuild/DevEnv 忽略此条目,并且不再报告基于Compile
通常与proj
文件中的程序集信息条目一起出现的操作的错误。
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'
归档时间: |
|
查看次数: |
73222 次 |
最近记录: |