Укажите AdditionalReferencePaths из внешнего файла .target. - PullRequest
0 голосов
/ 04 июля 2018

У меня есть несколько проектов, требующих настройки в непрерывной среде.

Я помещаю все настройки в отдельный файл .target, чтобы использовать этот файл во всех проектах.

В самом конце моих файлов csproj я помещаю (до закрытия) Project элемент:

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

Если я укажу с помощью командной строки путь (msbuild myproject.csproj /p:ReferencePath="C:\path\to\dlls"). Проект скомпилирован.

Мой целевой файл:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <!-- some tweaks here -->
    <PropertyGroup Condition="'$(CompileFor)' == 'SP2013'">
        <SomeProperty>some value</SomeProperty>
        <AdditionalReferencePaths>C:\path\to\dlls</AdditionalReferencePaths>
    </PropertyGroup>      
</Project>

Но это не работает (DLL не может быть решена).

Я тоже пробовал:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     <ItemGroup>
            <AdditionalReferencePaths Include="C:\path\to\dlls"/>            
     </ItemGroup> 
</Project>

Это не работает, потому что элемент ItemGroup не может быть вне элемента Target

Наконец, я попробовал:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">    
    <Target Name="SomeTarget" BeforeTargets="BeforeBuild">          
        <ItemGroup>
            <AdditionalReferencePaths Include="C:\path\to\dlls"/>              
        </ItemGroup> 
    </Target>    
</Project>

Это все еще не работает. Нет ошибок, я вижу, что цель вызывается в журнале сборки, но библиотеки DLL все еще не разрешены.

Как это исправить?

Чтобы дать немного контекста, твики, которые я включил в целевой файл, позволяют мне компилировать проект для разных версий DLL. Код представляет собой плагин стороннего приложения (SharePoint, чтобы назвать его), и я хочу скомпилировать для нескольких различных версий продукта. Используя некоторые условные выражения, я могу настроить таргетинг либо на папку с одной версией продукта, либо на другую папку для другой версии продукта.

1 Ответ

0 голосов
/ 05 июля 2018

Я избавился от этой проблемы после двух исправлений.

  1. Правильное свойство было не AdditionalReferencePath, а ReferencePath
  2. Я также должен переместить Import до первого ItemGroup моего csproj. Я предполагаю, что это было необходимо, чтобы свойства были установлены до Reference элемента
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...