.net - 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的包引用,但无济于事。
有人对如何解决这个问题有任何建议吗?
解决方案
由于任何 < 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 ...
推荐阅读
- java - 我可以使用 JavaFX 自动更改场景吗?
- javascript - 在 md-select 下使用自定义指令传递 ngModel 和 ngChange
- python - 在 Django ORM 中过滤关系字段
- jquery - 提升缩放不适用于引导轮播中的图像
- node.js - 函数在 Promise 结束之前完成
- java - d3.js 试图导出数据字符串
- python - for循环中的重复迭代
- python - 如何使用 .boxplot 函数在 matplotlib 的 pyplot 中修复“X 必须有 2 个或更少的维度”错误?
- html - 数据表对齐标题和数据列
- java - 从另一个 Fragment 获取值,然后将 Items 添加到自定义 recyclerview