【问题标题】:\MSBuild\16.0\Bin\Microsoft.CSharp.targets file not found\MSBuild\16.0\Bin\Microsoft.CSharp.targets 文件未找到
【发布时间】:2019-07-13 09:14:53
【问题描述】:

我想在 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

  • 当前

  • 微软。

Visual Studio Community 2019 版本 16.1.6.、.Net Framework 版本 4.7.03056

所以我认为我需要升级 MSBuild 15.0 -> 16.0。

我尝试过的:

感谢您的帮助。 BerndGit

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

更新 Dotnet 信息

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> 

【问题讨论】:

  • 看起来,您正在将 build pf 旧式 .NET msbuild 项目与来自 .NET Core 的新 sdk 式项目混合在一起
  • 您是否安装了dotnet sdk?只需在您的 cmd 中写入 dotnet --info 并告诉我们输出是什么。
  • @Baruch:感谢您的评论。我已将输出添加到我的问题中。
  • @PavelAnikhouski:我是 C# 新手。所以我无法对此发表评论。我只是想编译别人写的代码。假设有这种技术的混合。在我看来,这听起来像是一个更复杂的问题,仅仅“安装包 xyz”并不能解决这个问题。你有同样的印象吗?
  • @BerndGit 嗨,这个问题有什么更新吗?我的解决方法是否可行,或者如果问题仍然存在,请分享更多详细信息:)

标签: c# visual-studio msbuild


【解决方案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

【讨论】:

    猜你喜欢
    • 2018-09-19
    • 2010-09-05
    • 2010-11-25
    • 2020-12-11
    • 2016-03-08
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 2018-07-30
    相关资源
    最近更新 更多