Ссылки и сохранение строгого имени извне для повторного использования
У меня есть много сборок, которые установили InternalsVisibleToAttribute, указывающий одну конкретную сборку в том же решении. К сожалению, указанная сборка имеет строгое имя, поэтому мне всегда приходится снова и снова вставлять один и тот же токен открытого ключа в файлы AssemblyInfo.cs. Поскольку в C# нет прекомпилятора, как бы я в идеале устранил эту избыточность.
2 ответа
У вас есть несколько простых вариантов:
- Используйте константу вместо литерала в файлах AssemblyInfo.cs.
- Добавьте этот атрибут в общий файл (например, 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); #>")]