通过自定义 Visual Studio Build Event 自动删除非 Core 项目的
project.assets.json
文件来解决此问题。
更新(6/13/2020):删除
project.assets.json
后会导致出现 squiggy lines,因为 Intellisense 需要文件中的引用。因此,更好的解决方法是使用
Pre-build 事件仅在项目不是
.Net Core 时删除该文件。
这可以通过计算机上的
$(TargetFramework) ---> "netcoreapp3.1"
进行识别。您安装的框架可能显示不同的标识符,请相应地更新脚本(请参阅由第 2 行的
ECHO
生成的构建
Output 窗口中的文本)。注意:在某些
.Net Framework 版本上,这可能是一个空字符串,这不应该是一个问题。我们还只比较前 7 个字符以忽略版本,以避免在版本更改时必须更新脚本。
SET _tgt=$(TargetFramework)
ECHO %_tgt%
IF NOT "%_tgt:~0,7%" == "netcore" (
cd $(ProjectDir)\obj
DEL project.assets.json
)
![在这里输入图片描述](https://istack.dev59.com/sr3bQ.webp)
==== 更新(2020年6月13日)结束。以下是原始答案,以提供上下文。 ====
我们将问题缩小到了一个文件:{Your project}/obj
文件夹中的project.assets.json
。它是由.Net Core项目创建的文件,但在切换到.Net Framework项目后,Visual Studio不会删除它,从而导致OP提到的问题。
解决方法是删除此文件,但我们不必每次需要切换项目时手动删除它,而是在Visual Studio中创建了一个后期构建事件,在每次成功的Core构建之后自动将其删除(如果您在构建之前运行脚本,则无法构建您的Core项目)。您可以自定义脚本以删除您认为有问题的任何文件/文件夹,但我们的问题仅限于该单个文件。
cd $(ProjectDir)\obj
del project.assets.json
注意:如果已经存在有问题的构件,您需要手动删除
一次,因为后构建事件只会在成功构建后运行。
![在此输入图片描述](https://istack.dev59.com/gPpPi.webp)
project.json
,而是采用新格式的.csproj
。你使用的是哪个.NET Core版本?csproj
文件是什么样子的? - Panagiotis Kanavos