Условные ссылки - PullRequest
6 голосов
/ 13 мая 2009

В настоящее время наш код .net не привязан к конкретному процессору, но зависит от библиотек (Oracle / ODP.Net). Мы нашли решение, в котором мы редактируем файл csproj напрямую и помещаем ссылки на группы элементов с условием условия на основе выбранной нами конфигурации сборки. У нас есть 32-битная отладка / выпуск и 64-битная отладка / выпуск, и правильные сборки являются ссылками при сборке этой конфигурации.

Это работает более или менее во время сборки, но вызывает все виды сбоев в Visual Studio (2008). Конечным результатом является то, что одна и та же сборка отображается четыре раза по ссылкам, а три имеют желтый восклицательный знак. Он также генерирует около 76 предупреждений, от которых я не могу избавиться. Мы пытаемся получить 0 предупреждений, потому что мы хотим знать, когда появятся новые, поэтому это небольшая проблема.

Кто-нибудь знает о решении условных ссылок, которое позволяет ему выглядеть как одна ссылка (каким оно действительно является) и не заполняет мои предупреждения во время сборки?

Ответы [ 2 ]

1 голос
/ 20 мая 2009

Мы нашли ответ, который немного отличался от того, что мы искали, но мне это нравится. Если вы добавите это в свой конфигурационный файл в runtime-> AssemblyBinding

<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342"  />
<bindingRedirect oldVersion="2.111.6.20" newVersion="2.111.6.0" />
</dependentAssembly>

Тогда 64-битная и 32-битная версии работают с одинаковой сборкой. Все, что нам нужно сделать, это , а не , скопировать Oracle.DataAccess.dll локально, когда мы развернем его и позволим ему извлечь его из GAC.

Спасибо!

1 голос
/ 13 мая 2009

Единственное, что приходит на ум, - это наличие 4 отдельных файлов проекта ... но прежде чем паниковать о необходимости поддерживать 4 файла при каждом добавлении класса, вы можете воспользоваться еще одним приемом csproj:

<Compile Include="**\*.cs" />

который (IIRC) говорит "включить все файлы cs на любом уровне в структуру папок".

...