Как включить правильную ссылку в C # с помощью вкладки «Браузер» - PullRequest
3 голосов
/ 18 мая 2010

Я работаю над VS2010 C # и хочу добавить ссылку .dll, скомпилированную под VS2008; эта .dll существует в 2 версиях: отладка и выпуск.

.dll не находится на вкладках .NET, COM или проектов, поэтому у меня есть только вкладка "браузер", чтобы добавить .dll к ссылке.

У меня такой вопрос: как я могу указать VS, чтобы он брал версию .dll выпуска, когда я компилирую в режиме выпуска, и версию DLL отладки, когда я компилирую в режиме отладки?

Спасибо.

Ответы [ 5 ]

12 голосов
/ 08 марта 2011

Лучший способ реализовать решение Брайана - сделать это следующим образом:

<Reference Include="AjaxControlToolkit">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>path/to/folder/bin/$(Configuration)/AjaxControlToolkit.dll</HintPath>
</Reference>

Это будет красиво переключаться между выпуском и отладкой, при этом оно не будет отображаться дважды в вашем представлении ссылок.

3 голосов
/ 18 мая 2010

Возможно, вам придется вручную отредактировать основной файл .csproj. Примерно таким образом

<Reference Condition=" '$Configuration'=='Debug' " 
           Include="path\to\Debug\Foo.dll" />
<Reference Condition=" '$Configuration'=='Release' " 
           Include="path\to\Release\Foo.dll" />

(Может быть легко добавить ссылку на отладочную версию с помощью обзора, затем щелкните правой кнопкой мыши проект в обозревателе решений, нажмите «Выгрузить проект», затем снова щелкните правой кнопкой мыши «Редактировать ваш. Foo.dll, который вы только что добавили, затем щелкните правой кнопкой мыши «Обновить проект».)

EDIT

Чтобы не видеть две копии внутри VS, может быть что-то вроде

<Reference debugstuff as before>
    <Visible Condition=debugcond>true</Visible>
    <Visible Condition=releasecond>false</Visible>
</Reference>
and same for release

То есть условно установите метаданные Visible в узле ссылки на true / false в зависимости от условия. Я не пытался узнать, работает ли он.

1 голос
/ 10 апреля 2011

мы нашли какой-то идеальный способ справиться с этой ситуацией. Во-первых, опубликуйте файл библиотеки в трех специальных папках: $ (Configuration) \ MyLibrary.dll Debug \ MyLibrary.dll Release \ MyLibrary.dll

затем в вашем приложении укажите ссылку на $ (Configuration) \ MyLibrary.dll. сделанный! Теперь, когда вы измените конфигурацию решения, DLL будет обновляться автоматически.

1 голос
/ 18 мая 2010

Стандартный подход - добавить проект в решение.Тогда это полностью автоматически.

0 голосов
/ 15 июня 2012

Исходя из ответа @Kevin Yang, я сделал следующее:

  1. Сборка в path\to\Debug\MyCode.dll и path\to\Release\MyCode.dll.
  2. Ссылка на одну из них в VS (с помощью вкладки «Обзор»).
  3. Выгрузите проект, который ссылается на вашу DLL.
  4. Щелкните правой кнопкой мыши на незагруженном проекте и выберите Edit MyReferencingProject.csproj...
  5. Найдите ссылку, и в элементе HintPath измените Debug / Release на $(Configuration) (так должно быть path\to\$(Configuration)\MyCode.dll).
  6. Промыть / повторить (с любыми другими подобными DLL).

Когда вы закончите, должно выглядеть:

<Reference Include="MyCode">
  <HintPath>C:\path\to\$(Configuration)\MyCode.dll</HintPath>
</Reference>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...