Как определить AssemblyProduct в csproj с новой системой сборки csproj

В «старом» мире я бы определил AssemblyProductAttribute и AssemblyTrademarkAttribute, которые отображались бы как «Название продукта» и «Юридические товарные знаки» в свойствах файла в проводнике Windows.

В новой упрощенной системе msbuild, которая используется в Visual Studio 2017 для сетевых стандартных проектов, предпочтительным способом является определение всех этих атрибутов уровня сборки непосредственно в csproj и позволить msbuild сгенерировать фактические атрибуты.

Но, похоже, в csproj нет возможности определить «Название продукта» и «Юридические товарные знаки». Или есть? Эта цель msbuild, кажется, намекает, что она должна работать как минимум для AssemblyProductAttribute.

Как я могу добавить эти две вещи?

Обновление: Хорошо, теперь для атрибута AssemblyProductAttribute можно записать <Product>Foo</Product> прямо в файл csproj. А как же AssemblyTrademarkAttribute?


person bitbonk    schedule 02.09.2017    source источник
comment
Просто потому, что они добавили страницу свойств в IDE, это не делает ее предпочтительным способом. Я думаю, особенно не для программистов, портирующих старые проекты. Использование старого стиля с атрибутом в коде все еще работает, вы можете разместить [assembly: AssemblyTrademark(foobar)] где угодно.   -  person Hans Passant    schedule 02.09.2017
comment
Я предполагал, что это предпочтительный способ, потому что, когда вы определяете атрибут в коде, а затем используете эту страницу свойств, вы получите ошибку компилятора о повторяющихся атрибутах. В более ранней версии VS это изменяло атрибуты в коде (AssemblyInfo.cs), но не больше.   -  person bitbonk    schedule 02.09.2017
comment
Всегда можно создать новый файл cs и поместить в него атрибуты сборки, так что это не имеет большого значения. Версия, интегрированная с msbuild, лучше, поскольку вы можете использовать свойства и определять отдельные импортированные файлы msbuild для установки значений для всех проектов и т. д. (даже для пересечения смешанных решений f#+c#)   -  person Martin Ullrich    schedule 02.09.2017


Ответы (1)


Вы можете добавить элемент для атрибутов сборки, которые еще не были созданы этими целями:

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

Пример можно увидеть здесь, чтобы узнать, как его можно использовать для создания InternalsVisibleTo атрибутов.

person Martin Ullrich    schedule 02.09.2017