【发布时间】:2021-12-04 07:35:45
【问题描述】:
我想从我的项目文件中删除 TargetFramework 说明符并通过命令行传递它。听起来很简单:
dotnet build -f net5
但最大的问题是 Nuget 方面。因为
dotnet restore
抱怨缺少框架:
dotnet 恢复 common\common.csproj 确定要恢复的项目... C:\Program Files\dotnet\sdk\5.0.400\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(92,5): error NETSDK1013: The TargetFramework value '' is not已识别。 可能拼写错误。如果不是,则必须明确指定 TargetFrameworkIdentifier 和/或 TargetFrameworkVersion 属性。
问题在于 dotnet restore 不接受 TargetFamework 参数。所以我不得不将 TargetFramework 写入 conig 文件:更糟糕的是,在 obj 目录中总是有一个 Nuget 恢复,所以每次在目标框架之间切换时,我都需要修改配置文件并进行新的恢复。这非常麻烦,我想知道如何避免这种情况。
如果这不能解决,我会退出 NuGet 并直接引用包程序集。
感谢您的帮助
【问题讨论】:
-
试试
dotnet restore -p:TargetFramework=net5.0 -
我会说这行得通! -p 开关似乎没有记录(docs.microsoft.com/en-us/dotnet/core/tools/dotnet-restore)。你怎么知道的?
-
它记录在msbuild docs。
dotnet restore实际上是dotnet msbuild -t:restore,因此 msbuild 的任何开关都适用于restore或build -
完美,你想把你的评论写成答案吗?