找不到\ MSBuild \ 16.0 \ Bin \ Microsoft.CSharp.targets文件

时间:2019-07-13 09:14:53

标签: c# visual-studio msbuild

我想用c#从事一个开源项目。

当我想要重建项目时,我得到:

Das Projekt "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\16.0\Bin\Microsoft.CSharp.targets" wurde von "C:\Program Files\dotnet\sdk\2.1.701\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.targets" nicht in (41,3) importiert, weil die Datei nicht vorhanden ist.

什么是英语

The project "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\16.0\Bin\Microsoft.CSharp.targets" was not imported by "C:\Program Files\dotnet\sdk\2.1.701\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.targets" because the file is missing.

我在文件夹中:    C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Community \ MSBuild \ 我只有子文件夹:

  • 15.0

  • 当前

  • Microsoft。

Visual Studio Community 2019版本16.1.6..NET Framework版本4.7.03056

所以我认为我需要以某种方式升级MSBuild 15.0-> 16.0。

我尝试过的事情:

感谢您的帮助。     BerndGit

PS:我正在尝试编译的项目 https://github.com/BerndGit/Kamban/tree/feature/refactoring

更新点网信息

dotnet --info
.NET Core SDK (gemäß "global.json"):
 Version:   2.1.701
 Commit:    8cf7278aa1

Laufzeitumgebung:
 OS Name:     Windows
 OS Version:  10.0.17134
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\2.1.701\

Host (useful for support):
  Version: 2.1.12
  Commit:  ccea2e606d

.NET Core SDKs installed:
  2.1.700 [C:\Program Files\dotnet\sdk]
  2.1.701 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download
PM> 

1 个答案:

答案 0 :(得分:1)

请检查其在Kamban.csproj中导入Microsoft.CSharp.targets的方式:

<LanguageTargets>$(MSBuildExtensionsPath)\$(VisualStudioVersion)\Bin\Microsoft.CSharp.targets</LanguageTargets>

根据Kamban.csproj的内容,它使用$(VisualStudioVersion)来定位Microsoft.CSharp.targets文件。它在VS2017和更早版本中效果很好,但在VS2019中不建议使用,因为msbuild的位置在VS2019中进行了更改

请参见this document:从VS2019预览开始,MSBuild将使用“当前”而不是主要版本号作为其路径的一部分。 因此,构建过程所需的Microsoft.CSharp.targets文件实际上存在于路径...\2019\Community\MSBuild\Current\Bin\Microsoft.CSharp.targets中,而不是...\2019\Community\MSBuild\16.0\Bin\Microsoft.CSharp.targets中。

这就是为什么它在错误消息中说file is missing,导致它试图从错误的路径中找到目标文件的原因。

一种解决方法

使用$(MSBuildToolsVersion)而不是$(VisualStudioVersion)查找.targets文件。

打开并编辑Kamban.csproj文件,将LanguageTargets的值更改为:

<LanguageTargets>$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Bin\Microsoft.CSharp.targets</LanguageTargets>

然后,构建引擎可以获得获取丢失文件的正确路径。

(注意:此更改适用于VS2017和VS2019)

另外:我已经检查了开源解决方案,似乎是针对.net框架和.net标准,我不确定为什么此错误消息来自SDK.targets,建议您在Visual Studio IDEmsbuild command-line