Публикация Dotnet ищет зависимости в каталоге отладки вместо выпуска - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть проект Project.Api, который ссылается на другой проект Project.DomainModel.Когда я собираю проект API для выпуска, запустив

dotnet restore && dotnet build -c Release

, он успешно собирается.Однако, когда я пытаюсь опубликовать

 dotnet publish -c Release -o published --no-restore --no-build ./Project.Api

, я получаю эту ошибку:

/usr/local/share/dotnet/sdk/2.1.302/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Publish.targets(168,5): error MSB3030: Could not copy the file "xxxx/Project.DomainModels/bin/Debug/netcoreapp2.1/Project.DomainModels.dll" because it was not found. [xxxx/Project.Api/Project.Api.csproj]

В соответствии с ошибкой, он ищет указанный проект в каталоге Debug, ноКонечно, он не найдет его там, потому что он будет в каталоге Release. Файл

Project.Api.csproj выглядит следующим образом:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="AutoMapper" Version="8.0.0" />
  </ItemGroup>
  <ItemGroup>
      <ProjectReference Include="..\Project.DomainModels\Project.DomainModels.csproj" />
  </ItemGroup>
</Project>

Любая идея, почему он ищет вКаталог отладки вместо выпуска?Получаем это как на Mac, так и на Linux-машине.

1 Ответ

0 голосов
/ 11 декабря 2018

Ваша ошибка --no-build, с этим флагом вы не позволяете dotnet создавать файл ссылок проекта.

Неудачная публикация:

dotnet publish -c Release -o published --no-restore --no-build .\App\

CSC : error CS0006: Metadata file 'C:\Path\App.Domain\bin\Release\netstandard2.0\App.Domain.dll' could not be found [C:\Path\App\App.csproj]

Успешная публикация:

dotnet publish -c Release -o published --no-restore  .\App\

 App.Domain -> C:\Path\App.Domain\bin\Release\netstandard2.0\App.Domain.dll
 App -> C:\Path\App\bin\Release\netcoreapp2.1\App.dll
 App -> C:\Path\App\bin\Release\netcoreapp2.1\App.Views.dll
 App -> C:\Path\App\published\

Пример ответа dotnet --info:

.NET Core SDK (reflecting any global.json):
 Version:   2.1.500
 Commit:    b68b931422

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.17763
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\2.1.500\

Host (useful for support):
  Version: 3.0.0-preview-27122-01
  Commit:  00c5c8bc40

Подробнее о MSBuild , я надеюсь, что этот ответ поможет вам лучше понять dotnetпроцесс сборки.

...