Ссылки и сохранение строгого имени извне для повторного использования

У меня есть много сборок, которые установили InternalsVisibleToAttribute, указывающий одну конкретную сборку в том же решении. К сожалению, указанная сборка имеет строгое имя, поэтому мне всегда приходится снова и снова вставлять один и тот же токен открытого ключа в файлы AssemblyInfo.cs. Поскольку в C# нет прекомпилятора, как бы я в идеале устранил эту избыточность.

2 ответа

У вас есть несколько простых вариантов:

  1. Используйте константу вместо литерала в файлах AssemblyInfo.cs.
  2. Добавьте этот атрибут в общий файл (например, CommonFriendAssemblies.cs), который связан, а не скопирован в ваши отдельные проекты.

Управлять #1 несколько проще, но он имеет неприятный побочный эффект - удаление поддержки IntelliSense для ссылочных внутренних объектов в проекте ссылок.

№ 2 несколько сложнее в управлении, но не мешает поддержке IntelliSense.

Может быть, вы могли бы использовать T4

переименовать AssemblyInfo.cs в AssemblyInfo.tt

и добавить что-то вроде этого

<#@ template language="C#v3.5" hostspecific="True" debug="True" #>
<#@ output extension="cs" #>

[assembly: InternalsVisibleTo("<# Write(System.Reflection.Assembly.GetExecutingAssembly().FullName); #>")]
Другие вопросы по тегам