Условная ссылка - PullRequest
       32

Условная ссылка

4 голосов
/ 17 октября 2011

У меня есть приложение, которое я писал, которое связывается со сторонним приложением через библиотеку Component Object Model.Я должен ссылаться на эту COM-библиотеку в самом проекте Visual Studio, чтобы приложение, которое я пишу, работало.Существует также библиотека-оболочка .NET, на которую я должен ссылаться в проекте Visual Studio для взаимодействия с библиотекой COM.

Есть ли способ создать условную инициализацию объектакласс, чтобы использовать метод в классе .NET внутри библиотеки оболочки .NET, который будет работать в более поздней версии сторонней библиотеки COM.

Проблема, с которой я столкнулся, заключалась в том, что япытался сослаться на функцию библиотеки COM, которая существовала только в более поздней версии.Версия самой оболочки была идентична, потому что она была обратно совместима.Когда я пытался получить доступ к этой новой функции, программа, которую я писал, молча закрывалась, когда я запускал ее, когда была установлена ​​предыдущая версия стороннего приложения.

Есть ли способ, которым я мог бы избежать такого поведения безизменить способ построения самого приложения?

1 Ответ

14 голосов
/ 17 октября 2011

Не уверен, понимаю ли я термин «ссылка на класс».

Вы можете сделать условную ссылку на всю сборку (DLL)

<Reference 
        Include="LegacyServices.dll" 
        Condition="$(AppVersion == '2.0')" />

или условно включить исходный файл впроект

<Compile 
       Include="LegacyServices.cs" 
       Condition="$(AppVersion == '2.0')" />

Оба используют MSBuild Condition в файле csproj.

...