简体   繁体   中英

`dotnet pack` on a fresh project fails

I've created a fresh class library (using VS2019). This is the CSProj:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <Authors>Itai</Authors>
    <Company>Company</Company>
    <Description>Test NuGet Package Creation using CLI</Description>
  </PropertyGroup>

</Project>

All it have is the Class1.cs file from the template:

using System;

namespace PkgTest
{
    public class Class1
    {
    }
}

but when I run dotnet pack.\PkgTest.csproj I get this:

PS C:\Users\itaib\source\repos\PkgTest\PkgTest> dotnet pack .\PkgTest.csproj
MSBuild version 17.3.0+92e077650 for .NET
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\amd64\Microsoft.CSharp.CurrentVersio
n.targets(317,5): error MSB4019: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\M
SBuild\Current\Bin\amd64\Roslyn\Microsoft.CSharp.Core.targets" was not found. Confirm that the expression in the Import
 declaration "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\amd64\Roslyn\Microsoft
.CSharp.Core.targets" is correct, and that the file exists on disk. [C:\Users\itaib\source\repos\PkgTest\PkgTest\PkgTes
t.csproj]

(BTW - Same thing happens when I try running dotnet build.\PkgTest.csproj )

When using VS2019 right click menu on the project and selecting "Pack" a package is created (or when I click on "Build" the project gets built), which means I have all the tools required to build and create a package.

I tried investigating the error, looking for the relevant files on disk and importing them, nothing works.

running dotnet --list-sdks returns this:

3.1.422 [C:\Program Files\dotnet\sdk]
5.0.403 [C:\Program Files\dotnet\sdk]
5.0.408 [C:\Program Files\dotnet\sdk]
6.0.400 [C:\Program Files\dotnet\sdk]

Any idea how to solve this?

UPDATE

The output of dotnet build -v diag.\PkgTest.csproj can be found here: https://pastebin.com/RTtgWbZ1

You have an environment variable set:

MSBUILD_EXE_PATH = C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe

Remove this environment variable, it will resolve your issue. It is causing the dotnet command to use the msbuild in the Visual Studio folder instead of its own folder.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM