【问题标题】:Publishing Error: MSB4019 using dotnet publish发布错误:使用 dotnet 发布的 MSB4019
【发布时间】:2018-11-29 07:09:15
【问题描述】:

我正在使用 VS2017(版本 15.7.3)和 Microsoft.NET Framework 版本 4.7.02046 该项目在 IDE 内编译和运行没有问题。

尝试在命令行上发布我的项目时出现以下错误:

>dotnet publish -c Release -r ubuntu.16.04-x64

Microsoft (R)-Buildmodul, Version 15.7.179.6572 für .NET Core
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

C:\..\.nuget\packages\microsoft.web.webjobs.publish\2.0.0\build\webjobs.console.targets(24,3): error MSB4019: Das importierte Projekt "C:\Program Files\dotnet\sdk\2.1.300\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets" wurde nicht gefunden. Vergewissern Sie sich, dass der Pfad in der <Import>-Deklaration korrekt und die Datei auf dem Datenträger vorhanden ist. [C:\projectPath\MyProject\my_project.csproj]

我注意到我的机器上不存在路径“C:\Program Files\dotnet\sdk\2.1.300\Microsoft\VisualStudio\v15.0\WebApplications”,为什么会在那里?

在英文中,它要求检查声明:

Make sure that the path in the <Import> declaration is correct and that the file exists on the disk.

我的项目文件中没有任何声明。这是指什么?

项目文件:

<Project Sdk="Microsoft.NET.Sdk;Microsoft.NET.Sdk.Publish">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <PreserveCompilationContext>true</PreserveCompilationContext>
    <RuntimeIdentifiers>win7-x64;win7-x86;ubuntu.16.04-x64;</RuntimeIdentifiers>
    <SuppressDockerTargets>True</SuppressDockerTargets>
    <DockerComposeProjectPath>..\..\docker-compose.dcproj</DockerComposeProjectPath>
  </PropertyGroup>
  <ItemGroup>
    <Compile Remove="Mqtt\**" />
    <EmbeddedResource Remove="Mqtt\**" />
    <None Remove="Mqtt\**" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="4.0.1" />
    <PackageReference Include="M2MqttDotnetCore" Version="1.0.7" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.1.1" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.1.1" />
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.1.1" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.1.1" />
    <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.1.1" />
    <PackageReference Include="Microsoft.Web.WebJobs.Publish" Version="2.0.0" />
    <PackageReference Include="Serilog" Version="2.7.1" />
    <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" />
    <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.2" />
    <PackageReference Include="Serilog.Enrichers.Thread" Version="3.0.0" />
    <PackageReference Include="Serilog.Extensions.Logging" Version="2.0.2" />
    <PackageReference Include="Serilog.Extensions.Logging.File" Version="1.1.0" />
    <PackageReference Include="Serilog.Settings.Configuration" Version="2.6.1" />
    <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
    <PackageReference Include="Serilog.Sinks.File" Version="4.0.0" />
    <PackageReference Include="Serilog.Sinks.Literate" Version="3.0.0" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\..\MyProjectArchive\MyProjectArchive.csproj" />
    <ProjectReference Include="..\MyProjectSubscriptionService\MyProjectSubscriptionService.csproj" />
  </ItemGroup>
  <ItemGroup>
    <Reference Include="Microsoft.Extensions.Configuration">
      <HintPath>..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.configuration\2.0.0\lib\netstandard2.0\Microsoft.Extensions.Configuration.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Extensions.Configuration.Abstractions">
      <HintPath>..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.configuration.abstractions\2.0.0\lib\netstandard2.0\Microsoft.Extensions.Configuration.Abstractions.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Extensions.Logging">
      <HintPath>..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.logging\2.0.0\lib\netstandard2.0\Microsoft.Extensions.Logging.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Extensions.Logging.Abstractions">
      <HintPath>..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.logging.abstractions\2.0.0\lib\netstandard2.0\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <None Update="appsettings.json">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
    <None Update="run.cmd">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="Settings.job">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

详细输出(使用 -v d)

PROJECT_PATH>dotnet publish -v d -c Release -r ubuntu.16.04-x64
Microsoft (R)-Buildmodul, Version 15.7.179.6572 für .NET Core
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

Der Buildvorgang wurde am 20.06.2018 10:17:21 gestartet.
     0>SDK "Microsoft.NET.Sdk" wird aufgelöst...
       NdE: $(MSBuildProjectExtensionsPath)="PROJECT_PATH\obj\" (vorheriger Wert: "obj\") unter DOTNET_SDK_PATH\2.1.300\15.0\Microsoft.Common.props (60,5)
       NdE: $(MSB)=";PROPS1" (vorheriger Wert: ";PROPS") unter NUGET.G.PROPS (13,5)
       NdE: $(MSB)=";PROPS2" (vorheriger Wert: ";PROPS1") unter NET.SDK.PROPS (15,5)
       NdE: $(MSB)=";PROPS3" (vorheriger Wert: ";PROPS2") unter NET.SDK.DEFAULT.PROPS (21,5)
       NdE: $(MSB)=";PROPS4" (vorheriger Wert: ";PROPS3") unter NET.SupTarFrameW.PROPS (17,9)
       NdE: $(MSB)=";PROPS5" (vorheriger Wert: ";PROPS4") unter NET.SDK.C#.PROPS (15,5)
       SDK "Microsoft.NET.Sdk.Publish" wird aufgelöst...
       NdE: $(OutputType)="Exe" (vorheriger Wert: "Library") unter PROJECT_PATH\my_project.csproj (3,5)
       NdE: $(MSB)=";PROPS5_TP" (vorheriger Wert: ";PROPS5") unter SDK_TARGETS_PATH (15,5)
       NdE: $(MSB)=";PROPS5_TP1" (vorheriger Wert: ";PROPS5_TP") unter TARGETS_PATH\Microsoft.NET.Sdk.BeforeCommon.targets (15,5)
       NdE: $(MSB)=";PROPS5_TP2" (vorheriger Wert: ";PROPS5_TP1") unter ms.net.defaultAssemblyInfo.targets (15,5)
       NdE: $(MSB)=";PROPS5_TP3" (vorheriger Wert: ";PROPS5_TP2") unter TARGETS_PATH\Microsoft.NET.DefaultOutputPaths.targets (27,5)
       NdE: $(MSB)=";PROPS5_TP4" (vorheriger Wert: ";PROPS5_TP3") unter TARGETS_PATH\Microsoft.NET.TargetFrameworkInference.targets (46,5)
       NdE: $(DefaultItemExcludes)=";bin\Release\/**;obj\Release\/**" (vorheriger Wert: ";bin\Release\/**") unter TARGETS_PATH\Microsoft.NET.TargetFrameworkInference.targets (166,5)
       NdE: $(IntermediateOutputPath)="obj\Release\netcoreapp2.1\" (vorheriger Wert: "obj\Release\") unter TARGETS_PATH\Microsoft.NET.TargetFrameworkInference.targets (178,5)
       NdE: $(OutputPath)="bin\Release\netcoreapp2.1\" (vorheriger Wert: "bin\Release\") unter TARGETS_PATH\Microsoft.NET.TargetFrameworkInference.targets (179,5)
       NdE: $(MSB)=";PROPS5_TP5" (vorheriger Wert: ";PROPS5_TP4") unter TARGETS_PATH\Microsoft.NET.RuntimeIdentifierInference.targets (15,5)
       NdE: $(IntermediateOutputPath)="obj\Release\netcoreapp2.1\ubuntu.16.04-x64\" (vorheriger Wert: "obj\Release\netcoreapp2.1\") unter TARGETS_PATH\Microsoft.NET.RuntimeIdentifierInference.targets (150,5)
       NdE: $(OutputPath)="bin\Release\netcoreapp2.1\ubuntu.16.04-x64\" (vorheriger Wert: "bin\Release\netcoreapp2.1\") unter TARGETS_PATH\Microsoft.NET.RuntimeIdentifierInference.targets (151,5)
       NdE: $(MSB)=";PROPS5_TP6" (vorheriger Wert: ";PROPS5_TP5") unter TARGETS_PATH\Microsoft.NET.NuGetOfflineCache.targets (15,5)
       NdE: $(_FrameworkVersionForImplicitDefine)="2_1" (vorheriger Wert: "2.1") unter TARGETS_PATH\Microsoft.NET.Sdk.BeforeCommon.targets (157,5)
       NdE: $(MSB)=";PROPS5_TP7" (vorheriger Wert: ";PROPS5_TP6") unter DOTNET_SDK_PATH\2.1.300\Microsoft.CSharp.CurrentVersion.targets (38,9)
       NdE: $(_DebugSymbolsProduced)="true" (vorheriger Wert: "false") unter DOTNET_SDK_PATH\2.1.300\Microsoft.Common.CurrentVersion.targets (152,5)
       NdE: $(_DocumentationFileProduced)="false" (vorheriger Wert: "true") unter DOTNET_SDK_PATH\2.1.300\Microsoft.Common.CurrentVersion.targets (157,5)
       NdE: $(ProcessorArchitecture)="amd64" (vorheriger Wert: "x64") unter DOTNET_SDK_PATH\2.1.300\Microsoft.Common.CurrentVersion.targets (473,5)
       NdE: $(DelaySign)="" (vorheriger Wert: "false") unter DOTNET_SDK_PATH\2.1.300\Microsoft.Common.CurrentVersion.targets (525,5)
       NdE: $(MSB)=";PROPS5_TP8" (vorheriger Wert: ";PROPS5_TP7") unter DOTNET_SDK_PATH\2.1.300\Microsoft.Common.CurrentVersion.targets (536,5)
       NdE: $(MSB)=";PROPS5_TP9" (vorheriger Wert: ";PROPS5_TP8") unter DOTNET_SDK_PATH\2.1.300\Microsoft.Common.CurrentVersion.targets (537,5)
       NdE: $(_SGenGenerateSerializationAssembliesConfig)="Auto" (vorheriger Wert: "") unter DOTNET_SDK_PATH\2.1.300\Microsoft.Common.CurrentVersion.targets (3496,5)
       NdE: $(MSB)=";PROPS5_TP10" (vorheriger Wert: ";PROPS5_TP9") unter DOTNET_SDK_PATH\2.1.300\NuGet.targets (45,5)
       NdE: $(MSB)=";PROPS5_TP11" (vorheriger Wert: ";PROPS5_TP10") unter DOTNET_SDK_PATH\2.1.300\15.0\Microsoft.Common.targets\ImportAfter\Microsoft.NET.Build.Extensions.targets (14,5)
       NdE: $(MSB)=";PROPS5_TP12" (vorheriger Wert: ";PROPS5_TP11") unter DOTNET_SDK_PATH\2.1.300\Microsoft\Microsoft.NET.Build.Extensions\Microsoft.NET.Build.Extensions.targets (15,5)
       NdE: $(MSB)=";PROPS5_TP13" (vorheriger Wert: ";PROPS5_TP12") unter DOTNET_SDK_PATH\2.1.300\15.0\Microsoft.Common.targets\ImportAfter\Microsoft.TestPlatform.ImportAfter.targets (16,5)
       NdE: $(MSB)=";PROPS5_TP14" (vorheriger Wert: ";PROPS5_TP13") unter DOTNET_SDK_PATH\2.1.300\Microsoft.TestPlatform.targets (17,5)
       NdE: $(MSB)=";PROPS5_TP15" (vorheriger Wert: ";PROPS5_TP14") unter PROJECT_PATH\obj\my_project.csproj.nuget.g.targets (4,5)
       NdE: $(FilePreview)="false" (vorheriger Wert: "") unter C:\Users\user\.nuget\packages\microsoft.web.webjobs.publish\2.0.0\build\Microsoft.Web.WebJobs.Publish.targets (36,5)
     1>Projekt "PROJECT_PATH\my_project.csproj" auf Knoten "1", Restore Ziel(e).
     1>Erstellung mit der Toolsversion "15.0".
     1>C:\Users\user\.nuget\packages\microsoft.web.webjobs.publish\2.0.0\build\webjobs.console.targets(24,3): error MSB4019: Das importierte Projekt "DOTNET_SDK_PATH\2.1.300\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets" wurde nicht gefunden. Vergewissern Sie sich, dass der Pfad in der <Import>-Deklaration korrekt und die Datei auf dem Datenträger vorhanden ist. [PROJECT_PATH\my_project.csproj]
     1>Die Erstellung des Projekts "PROJECT_PATH\my_project.csproj" ist abgeschlossen, Restore Ziel(e) -- FEHLER.

Fehler beim Buildvorgang.

       "PROJECT_PATH\my_project.csproj" (Restore Ziel) (1) ->
         C:\Users\user\.nuget\packages\microsoft.web.webjobs.publish\2.0.0\build\webjobs.console.targets(24,3): error MSB4019: Das importierte Projekt "DOTNET_SDK_PATH\2.1.300\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets" wurde nicht gefunden. Vergewissern Sie sich, dass der Pfad in der <Import>-Deklaration korrekt und die Datei auf dem Datenträger vorhanden ist. [PROJECT_PATH\my_project.csproj]

    0 Warnung(en)
    1 Fehler

Verstrichene Zeit 00:00:00.52

要添加详细输出,我必须通过用占位符替换重复值来缩短它:

NdE: Neuzuweisung der Eigenschaft
MSB: MsBuildAllProjects
DOTNET_SDK_PATH: C:\Program Files\dotnet\sdk
TARGETS_PATH: DOTNET_SDK_PATH\2.1.300\Sdks\Microsoft.NET.Sdk\targets
SDK_TARGETS_PATH: DOTNET_SDK_PATH\2.1.300\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.targets
PROPS: DOTNET_SDK_PATH\2.1.300\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.props
PROPS1: PROPS;NUGET.G.PROPS
PROPS2: PROPS1;NET.SDK.PROPS
PROPS3: PROPS2;NET.SDK.DEFAULT.PROPS
PROPS4: PROPS3;NET.SupTarFrameW.PROPS
PROPS5: PROPS4;NET.SDK.C#.PROPS
PROPS5_TP: PROPS5;SDK_TARGETS_PATH
PROPS5_TP1: PROPS5_TP;TARGETS_PATH\Microsoft.NET.Sdk.BeforeCommon.targets
PROPS5_TP2: PROPS5_TP1;ms.net.defaultAssemblyInfo.targets
PROPS5_TP3: PROPS5_TP2;TARGETS_PATH\Microsoft.NET.DefaultOutputPaths.targets
PROPS5_TP4: PROPS5_TP3;TARGETS_PATH\Microsoft.NET.TargetFrameworkInference.targets
PROPS5_TP5: PROPS5_TP4;TARGETS_PATH\Microsoft.NET.RuntimeIdentifierInference.targets
PROPS5_TP6: PROPS5_TP5;TARGETS_PATH\Microsoft.NET.NuGetOfflineCache.targets
PROPS5_TP7: PROPS5_TP6;DOTNET_SDK_PATH\2.1.300\Microsoft.CSharp.CurrentVersion.targets
PROPS5_TP8: PROPS5_TP7;PROJECT_PATH\my_project.csproj;DOTNET_SDK_PATH\2.1.300\Microsoft.Common.CurrentVersion.targets
PROPS5_TP9: PROPS5_TP8;PROJECT_PATH\my_project.csproj.user
PROPS5_TP10: PROPS5_TP9;DOTNET_SDK_PATH\2.1.300\NuGet.targets
PROPS5_TP11: PROPS5_TP10;DOTNET_SDK_PATH\2.1.300\15.0\Microsoft.Common.targets\ImportAfter\Microsoft.NET.Build.Extensions.targets
PROPS5_TP12: PROPS5_TP11;DOTNET_SDK_PATH\2.1.300\Microsoft\Microsoft.NET.Build.Extensions\Microsoft.NET.Build.Extensions.targets
PROPS5_TP13: PROPS5_TP12;DOTNET_SDK_PATH\2.1.300\15.0\Microsoft.Common.targets\ImportAfter\Microsoft.TestPlatform.ImportAfter.targets
PROPS5_TP14: PROPS5_TP13;DOTNET_SDK_PATH\2.1.300\Microsoft.TestPlatform.targets
PROPS5_TP15: PROPS5_TP14;PROJECT_PATH\obj\my_project.csproj.nuget.g.targets

NUGET.G.PROPS: PROJECT_PATH\obj\my_project.csproj.nuget.g.props
NET.SDK.PROPS: TARGETS_PATH\Microsoft.NET.Sdk.props
NET.SDK.DEFAULT.PROPS: TARGETS_PATH\Microsoft.NET.Sdk.DefaultItems.props
NET.SupTarFrameW.PROPS: TARGETS_PATH\Microsoft.NET.SupportedTargetFrameworks.props
NET.SDK.C#.PROPS: NET.SDK.C#.PROPS
ms.net.defaultAssemblyInfo.targets : TARGETS_PATH\Microsoft.NET.DefaultAssemblyInfo.targets

【问题讨论】:

  • 您是否尝试过指定日志详细程度? (添加 -v d 以获取详细日志记录,或添加 -v diag 以获取诊断日志记录)
  • 另外,description for that package 声明它“用于帮助支持在 Microsoft Visual Studio 中部署 Azure WebJobs”,因此它可能是由 VS 添加的。
  • 我添加了项目文件和详细输出。
  • 我目前没有部署到 Azure,而是部署到 Ubuntu 16.04 服务器。不知道你最后的评论是什么意思。
  • 我明白了,好的。谢谢。我设法解决了这个问题并发布了一个答案,虽然不确定到底是什么伎俩。

标签: c# visual-studio visual-studio-2017 .net-core asp.net-core-2.0


【解决方案1】:

在尝试了我在谷歌上搜索问题时发现的各种方法后,我最终设法解决了它。但是,我不确定是什么解决了它,因为在我从 Visual Studio 中更新 Windows Powershell 之前,我做了几件自己无法完成的事情。

  1. 我运行 WebJobs.Publish 安装程序:Install-Package Microsoft.Web.WebJobs.Publish -Version 2.0.0
  2. 我将 C:Programme(x86)\MSBuild\Microsoft\VisualStudio 下 v14.0 文件夹的内容复制到 v15.0 文件夹中
  3. 我在我的项目文件中添加了导入部分,没有用,再次删除它们
  4. 安装了本应安装缺失库的 MSBuildTools,但之后仍然无法正常工作。
  5. 我应用了 Visual Studio 的最新补丁 - 仍然无法正常工作
  6. 注意到 Visual Studio 通知中的 PowerShell 更新,并将其与 Data Lake 和 SQLServer 更新一起选择。在我关闭 Visual Studio 后,它开始更新,完成后我再次尝试,这一次它似乎又可以工作了。

我尝试了其他各种方法,但其中一种方法成功了。

【讨论】:

    猜你喜欢
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 2017-08-22
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多