У меня есть решение, которое я переношу с Visual Studio 2005 на 2010. Внутри IDE на машинах разработчиков все работает нормально, но мой сервер сборки (с CC.NET) выдает ошибку.
У меня около 10 проектов, 3 из которых не имеют строгого имени из-за использования неподписанных ссылок.
Один из них (подписанный) имеет InternalsVisible для другого из подписанных проектов.
В IDEЯ использую конфигурацию Debug / Release, которая задерживает подпись всех проектов со строгим именем.
Я также создал конфигурации Debug_Signed и Debug_Unsigned (и соответствующий Release_ *), которые только строят соответствующие проекты.
На моем сервере сборки я использую фактический закрытый ключ, чтобы сначала создать конфигурацию Debug_Signed, а затем снова вызвать MSBUILD для конфигурации Debug_Unsigned с SingAssembly = false.
Это прекрасно работало при использовании.NET 2.0 SDK, но теперь первый MSBUILD работает нормально, но затем второй MSBUILD пытается ребуйld подписанные проекты (так как на них ссылаются неподписанные проекты), и я получаю ошибку об одной сборке, имеющей InternalsVisible для подписанной сборки, в то время как сгенерированная сборка не подписана:
ошибка CS0281: Friendбыл предоставлен доступ к 'Sic.Gateway.Customers, PublicKey = 0024 ... 4bbe', но выходная сборка называется 'Sic.Gateway.Customers, версия = 2.0.0.796, культура = нейтральная, PublicKeyToken = null'.Попробуйте добавить ссылку на 'Sic.Gateway.Customers, PublicKey = 0024 ... 4bbe' или измените имя выходной сборки для соответствия.
Мне хотелось бы, чтобы второй MSBUILD использовал ссылкусборки, которые были только что собраны первым MSBUILD вместо того, чтобы пытаться перестроить их.
Сервер сборки просто имеет среду выполнения .NET 4.0 (не SDK), и мне пришлось скопировать два файла .targets (для SQL /CLR и веб-приложения).Но так как все кажется нормально, я не думаю, что это будет проблемой.
Кто-нибудь знает, что я могу сделать?
Спасибо,
Луис Алонсо Рамос