2016-06-14 3 views
1

Я работаю над несколькими проектами Visual Studio .Net, и все они совместно используют пакет Nuget, который я также разрабатываю в тандеме. Для тестирования я хотел бы обратиться непосредственно к .dll, сгенерированным моим проектом Nuget (без необходимости его упаковки и установки в каждом из тестовых проектов).Проект Visual Studio, локальная ссылка .dll, поддерживаемая Nuget .dll

Мне было интересно, если бы в проекте Visual Studio было указано, что проект должен ссылаться на определенную .dll по определенному пути, как бы возвратился к соответствующему пакету Nuget.

В большинстве машин путь .dll не существует, поэтому они будут использовать пакет Nuget, но на моей машине это будет означать, что у меня есть прямая линия к версии для разработки моей .dll.

Кстати, я использую Visual Studio 2013 для этого примера, но мне также было бы интересно узнать, возможно ли это в проектах Visual Studio 2015.

ответ

0

Вы можете использовать msbulid условие, чтобы проверить, если какой-то файл существует: https://msdn.microsoft.com/en-us/library/7szfhaft.aspx

Некоторые образцы:

<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" /> 

Или:

<Choose> 
    <When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'"> 
     <ItemGroup> 
     <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" /> 
     </ItemGroup> 
    </When> 
    <Otherwise> 
     <ItemGroup> 
     <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework" /> 
     </ItemGroup> 
    </Otherwise> 
    </Choose> 
+1

Я немного незнакома с этим. Мое предположение заключается в том, что я бы поместил код, предложенный в файлы .csproj для проектов с установленным nuget. Первый тег, который вы предложили, включает в себя файл с некоторыми целевыми объектами, я предполагаю, что мне придется заменить его на нужную отладочную .dll? Как я тогда укажу, чтобы использовать этот .dll на месте - nuget packaged .dll? EDIT: ваш второй пример, похоже, делает больше того, что я хочу, но я не знаком с тем, где он будет помещен в .csproj и как указывать путь к файлу. Думаю, я бы изменил условие и заменил ссылочные метки? –

+0

Да, вам нужно будет найти свои ссылки и заменить их условиями – vmg

0

Если я интерпретирую ваш вопрос правильно, то вы просто добавьте ссылку на .dll, которая создается в папке bin вашего проекта. Если добавить ссылку, то вы не знакомы, я могу объяснить, как это сделать.

Добавление ссылки:

-Верно нажмите кнопку «Ссылки» узел в вашем обозревателе решений -Click «Обзор ...» в правом нижнем углу. -Найдите в папку, в которой хранится DLL-файл.

Теперь каждый раз, когда вы вносите изменения в .dll и скомпилируете его, эти изменения будут автоматически отражаться в главной программе.

+0

Не остановит ли это людей, у которых нет версии разработки моего .dll? –

+0

Я не уверен, как вы распространяете свою программу для пользователей, но если вы щелкните правой кнопкой мыши ссылку на вашу .dll и убедитесь, что для параметра «Копировать локальное» установлено значение «true», это отправит копию .dll в ваш bin при каждом запуске программы в Visual Studio. Поэтому, когда вы запускаете исполняемый файл вне VS, он будет отображать последние изменения этой DLL. – NickC

+0

Извинения, но это отвечает на другой вопрос из того, что я имею в виду. Если я использую «copy local», то он скопирует версию DLL в версии .dll, которую я заменил nuget. Я полагаю, это хорошо, но не дает мне решения с поддержкой nuget. То есть, если я передам этот код в мой репозиторий, и у кого-то нет другого клонированного решения, он будет застрял с обвисшей ссылкой, когда они попытаются построить. Другое решение приближается к тому, что мне нужно. –

Смежные вопросы