由于dotnet核心移回了.csproj格式,有了一个新的自动生成的MyProject.AssemblyInfo.cs,其中包括:

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

注意,每次构建时都会自动重新生成。 以前,该文件在/obj/目录中找到,现在它似乎只在内存中,因为该文件无法在磁盘上找到,并且单击错误消息不会打开任何文件。

这是错误信息:

因为它们是在那里定义的,所以我不能自己在经典的AssemblyInfo.cs中定义它们。

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


当前回答

添加到NightOwl888的答案中,你可以进一步添加一个AssemblyInfo类,而不仅仅是一个普通类:

其他回答

您总是可以添加自己的AssemblyInfo.cs,这对于InternalsVisibleToAttribute、CLSCompliantAttribute和其他不是自动生成的属性非常方便。

将AssemblyInfo.cs添加到项目

在解决方案资源管理器中,右键单击<项目名称> >添加>新建文件夹。

命名文件夹为Properties。

右键单击“属性”文件夹,然后单击添加>新项目....

选择“Class”并将其命名为“AssemblyInfo.cs”。

抑制自动生成的属性

如果您希望将属性移回AssemblyInfo.cs,而不是让它们自动生成,您可以在MSBuild中抑制它们,正如natemcmaster在他的回答中指出的那样。

谢谢,这对我帮助很大。

在我的案例中,构建Blazor服务器端网站的项目在发布和调试上都是成功的,但发布网站仍然失败,出现了重复属性错误,这让我有点困惑。

解决方案是在.csproj和.pubxml文件中添加<GenerateAssemblyInfo>false</GenerateAssemblyInfo>:

项目路径:< > /属性/ PublishProfiles / < ProfileName > .pubxml:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0"
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        ...
        <!-- Add the line below -->
        <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    </PropertyGroup>
</Project>

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

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

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

如果您想了解底层发生了什么,请在Microsoft.NET.Sdk中签出Microsoft.NET.GenerateAssemblyInfo.targets。

在。net 5+中,你可以使用AssemblyMetadata:

<AssemblyMetadata include=“bar” value=“baz” />

添加到NightOwl888的答案中,你可以进一步添加一个AssemblyInfo类,而不仅仅是一个普通类: