如何在新的csproj构建系统中定义csproj中的AssemblyProduct?

3
在“旧”的世界中,我会定义一个AssemblyProductAttributeAssemblyTrademarkAttribute,它们会显示为Windows资源管理器中文件属性的“产品名称”和“法律商标”。
在Visual Studio 2017用于netstandard项目的新简化的msbuild系统中,首选的方法是直接在csproj中定义所有这些程序集级别的属性(链接1),然后让msbuild生成实际的属性。
但似乎没有办法在csproj中定义“产品名称”和“法律商标”。还是有的吗?这个msbuild目标似乎暗示它至少可以用于AssemblyProductAttribute
我该如何添加这两个东西呢?
更新: 好的,对于csproj文件中的ProductAttribute,可以直接写入< Product > Foo < /Product >。但是AssemblyTrademarkAttribute呢?

仅仅因为在IDE中添加了属性页面并不意味着它是首选的方式。特别是对于移植旧项目的程序员来说,我想这并不是最好的选择。使用旧的代码风格和属性仍然有效,你可以在任何地方放置 [assembly: AssemblyTrademark("foobar")]。 - Hans Passant
我以为这是首选的方法,因为当您在代码中定义属性,然后使用该属性页时,您将收到有关重复属性的编译器错误。在早期版本的VS中,这会修改代码中的属性(AssemblyInfo.cs),但现在不再如此。 - bitbonk
一个人总是可以创建一个新的cs文件并将程序集属性放入其中,所以这并不重要。但是,与msbuild集成的版本更好,因为您可以使用属性并定义单个导入的msbuild文件来设置所有项目的值等(甚至跨越混合f#+c#解决方案)。 - Martin Ullrich
1个回答

9

您可以为尚未由这些目标发出的装配属性添加项目:

<ItemGroup>
  <AssemblyAttribute Include="System.Reflection.AssemblyTrademarkAttribute">
    <_Parameter1>My Trademark</_Parameter1>
  </AssemblyAttribute>
</ItemGroup>

可以在这里看到一个示例,说明如何使用它来生成InternalsVisibleTo属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接