首页 > 解决方案 > dotnet pack - 错误 MSB3644: .NETFramework,Version=v3.5 的参考程序集未找到

问题描述

我有一个针对 .Net 3.5 的遗留项目,即<TargetFramework>net35</TargetFramework>,即使在将 csproj 升级为 SDK 样式后,该项目在我的构建服务器上也能正常构建。

我现在想将它打包为 NuGet 包,因此我已将此命令添加到我的构建脚本中:

dotnet pack MyProject.csproj -p:PackageVersion=1.2.3-build.4 --no-build --output .\nupkgs --configuration=Release

但是,此命令现在使我的构建失败: error MSB3644: The reference assemblies for .NETFramework,Version=v3.5 were not found

请注意,它之前的 MSBuild 任务工作得非常好,只是dotnet pack失败了,所以我很难相信这是缺少 .Net 3.5 SDK 的问题,我已经仔细检查过,并且 3.5 开发工具存在于构建中代理,我还可以看到C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5同一台机器上存在的文件夹。

我尝试添加对Microsoft.NETFramework.ReferenceAssemblies的包引用,但无济于事。

有人对如何解决这个问题有任何建议吗?

标签: .netnuget

解决方案


由于任何 < 4 的东西都有点..就构建的某些部分如何工作(msbuild 的部分然后在 2.0 CLR 上运行)而言“特殊”,我建议不要在dotnet这里使用 CLI,而是使用 Visual Studio 安装msbuild.exe(不是 msbuild Windows 中全局 .NET Framework 目录中的 .exe):

msbuild -t:Pack —p:NoBuild=True -p:Configuration=Release -p:PackageOutputPath=.\nupkgs ...

推荐阅读