.NET Core - сборка проекта с указанием ReferencePath - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть .csproj для платформы .NetCore с классическими ссылками. Я использую атрибут hintpath для среды разработки. Но я должен собрать csproj в среде CI, в которой ссылочные сборки находятся в другом каталоге. На классическом net4 я использовал аргумент /p:ReferencePath для инструмента MSBuild . Но «сборка dotnet» не имеет подобного аргумента. В качестве запасного варианта я нашел команду «dotnet msbuild», но этот инструмент игнорирует аргумент /p:ReferencePath=xxx и показывает мне

предупреждение MSB3245: не удалось разрешить эту ссылку. Не удалось найти сборку "AssemblyName". Убедитесь, что сборка существует на диске. Если эта ссылка требуется вашим кодом, вы можете получить ошибки компиляции.

Пожалуйста, подскажите, что я могу проверить, где dotnet-build / dotnet-msbuild выполняет поиск по ссылочным сборкам и как указать этот каталог?

Ответы [ 3 ]

0 голосов
/ 10 января 2019

Проблема вызвана Microsoft.NET.Sdk.props: AssemblySearchPaths не имеет ReferencePath. Исправлено добавлением в csproj:

<PropertyGroup>
    <AssemblySearchPaths>
        $(AssemblySearchPaths);
        $(ReferencePath);
    </AssemblySearchPaths>
</PropertyGroup>
0 голосов
/ 14 января 2019

Но у "сборки dotnet" нет аналогичного аргумента.

Почему ты так говоришь?

dotnet cli по-прежнему поддерживает «внедрение свойства» с -p вместо /p. Ссылка (Поиск "-p")

По вашему вопросу, команда build будет выглядеть следующим образом:

dotnet build -p:ReferencePath=xxx

0 голосов
/ 30 сентября 2018
  1. Вы по-прежнему можете создавать проекты .net CORE / Standard в решении, используя MSBUILD.
  2. Кажется, это ошибка, о которой я сообщил Microsoft, что (и речь идет не о ядре / стандарте, а о новом формате файла проекта) referencePath игнорируется в новом формате файла проекта.
  3. Добавьте команду /t:restore в команду msbuild вместе с целью сборки, чтобы она восстанавливалась и собиралась одновременно.
  4. Обходной путь для вашей ситуации с сервером CI / Build - создать специальную конфигурацию решения и добавить аналогичный элемент в файл проекта
<Choose>  
  <When Condition="'$(Configuration)|$(Platform)'=='YourSpecialConfiguration|x64'"><!-- attention here -->
    <ItemGroup>
      <Reference Include="your.dllname">
        <HintPath>yourSpecialPath\your.dllname.dll</HintPath><!-- attention here -->
        <Private>true</Private>
      </Reference>
      <!-- more references here -->
  </When>
  <Otherwise>
    <ItemGroup>
      <Reference Include="your.dllname">
        <HintPath>yourRegularPath\your.dllname.dll</HintPath><!-- attention here -->
        <Private>true</Private>
      </Reference>
      <!-- AND more references here -->
  </Otherwise>
</Choose>  

Это позволит вам просто изменить имя конфигурации в CI / Build и выполнит эту работу.

...