在分支之间转换时生成错误:您的项目未引用“.NETFramework,Version=v4.7.2”

我们正在使用 Git,我们有一个针对完整网络框架的解决方案。几天前,我开始将解决方案迁移到 .net 核心。不幸的是,出现了一些事情让我回到 master 分支(它有完整的 .NET 框架的代码)。每当我尝试构建应用程序时,都会收到以下错误:

1>D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\NuGet\15.0\Microsoft.NuGet.targets(186,5): 错误:您的项目没有引用“.NETFramework,版本 = v4.7.2" 框架。在 project.json 的“frameworks”部分添加对“.NETFramework,Version=v4.7.2”的引用,然后重新运行 NuGet 还原。

我试过清理 nuget 包,运行 git reset,但似乎没有任何帮助。知道发生了什么吗?


拉丁的传说
浏览 299回答 3
3回答

呼唤远方

project.assets.json通过自定义 Visual Studio Build Event自动删除非核心项目来解决此问题。更新(2020 年 6 月 13 日) 事实证明,删除会project.assets.json导致显示波浪线,因为 Intellisense 需要文件中的引用。因此,更好的解决方法是使用Pre-build事件仅在项目不是.Net Core 时删除文件。这是$(TargetFramework) ---> "netcoreapp3.1"在我的电脑上识别的。您安装的框架可能会显示不同的标识符,因此相应地更新脚本(请参阅第2 行生成的构建输出窗口中的文本ECHO)。注意:这可以是某些.Net Framework版本上的空字符串,这应该不是问题。我们也只比较前 7 个字符来忽略版本,以避免在版本更改时/当版本更改时必须更新脚本。SET _tgt=$(TargetFramework)ECHO %_tgt%IF NOT "%_tgt:~0,7%" == "netcore" (    cd $(ProjectDir)\obj    DEL project.assets.json)====更新 (6/13/2020) 到此结束。原始答案保留在下面以提供上下文。====我们将问题缩小到一个文件:project.assets.json在{Your project}/obj文件夹中。它是由.Net Core项目创建的文件,但在切换到导致 OP 提到的问题的.Net Framework项目后,Visual Studio 不会将其删除。解决的办法是删除此文件,但,而不必手动删除它每次我们需要转换项目,我们创建了一个生成后在Visual Studio事件将其删除后,每一次成功的核心版本(你的核心项目不会建如果您在构建之前运行脚本,显然)。您可以自定义脚本以删除您认为有问题的任何文件/文件夹,但我们的问题仅限于该单个文件。cd $(ProjectDir)\objdel project.assets.json注意:如果有问题的工件已经存在,您将需要手动删除一次,因为构建后事件只会在成功构建后运行。

白衣非少年

调用git clean -dfX- 从工作树中删除未跟踪的文件重建解决方案
打开App,查看更多内容
随时随地看视频慕课网APP