为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
拉丁的传说 2021-10-31 20:50:53
我们正在使用 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,但似乎没有任何帮助。知道发生了什么吗?
查看完整描述

3 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

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

)

//img1.sycdn.imooc.com//617e91570001a07a12700739.jpg

====更新 (6/13/2020) 到此结束。原始答案保留在下面以提供上下文。====


我们将问题缩小到一个文件:project.assets.json在{Your project}/obj文件夹中。它是由.Net Core项目创建的文件,但在切换到导致 OP 提到的问题的.Net Framework项目后,Visual Studio 不会将其删除。


解决的办法是删除此文件,但,而不必手动删除它每次我们需要转换项目,我们创建了一个生成后在Visual Studio事件将其删除后,每一次成功的核心版本(你的核心项目不会建如果您在构建之前运行脚本,显然)。您可以自定义脚本以删除您认为有问题的任何文件/文件夹,但我们的问题仅限于该单个文件。


cd $(ProjectDir)\obj

del project.assets.json

注意:如果有问题的工件已经存在,您将需要手动删除一次,因为构建后事件只会在成功构建后运行。

//img1.sycdn.imooc.com//617e91660001b31612350741.jpg

查看完整回答
反对 回复 2021-10-31
?
白衣非少年

TA贡献1155条经验 获得超0个赞

  1. 调用git clean -dfX- 从工作树中删除未跟踪的文件

  2. 重建解决方案


查看完整回答
反对 回复 2021-10-31
  • 3 回答
  • 0 关注
  • 298 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信