在项目中添加元数据
问题描述:
答
元数据在构建过程中用于各种任务。它不一定是编译器的输入或嵌入到程序集中,但主要由MSBuild和编译器(Roslyn)生态系统提供的目标和任务使用。
使用自定义目标扩展构建时,自定义元数据可能很有用。
当您想要将某些东西嵌入到程序集中时,您需要在构建过程中生成代码并在构建过程中添加项目。这需要通过编写msbuild目标手动完成。
元数据用于生成代码的示例适用于新的“SDK风格”项目(默认用于.NET Core,.NET Standard和ASP.NET Core应用程序),其中程序集属性通常为AssemblyInfo.cs
文件在构建过程中生成。有一个名为WriteCodeFragment
(code)的msbuild任务,可以读取项目并根据它们生成装配属性,这是wired up by msbuld targets。
以此来增加额外的属性就可以在主项目文件中加入一个项目来实现这一目标和任务的理解:
<ItemGroup>
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
<_Parameter1>My.Test.Project</_Parameter1>
</AssemblyAttribute>
</ItemGroup>
,然后做同样的事情,如果我有手动添加的AssemblyInfo.cs文件并编写下面的代码:
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("My.Test.Project")]
martin,这种方法可以覆盖已经在AssemblyInfo.cs中的值吗? –
不,这会导致编译器错误,因为您无法在程序集上定义两次相同的属性。 –