首页 文章

msbuild不恢复fody nuget包

提问于
浏览
1

我正在使用Stamp.Fody nuget包来标记我的.Net程序集 . 它有Fody作为依赖nuget包 . Jenkin是我们的持续集成服务器 . 为了构建.Net解决方案,使用MSBuild命令行调用 .

运行msbuild命令行后出现以下错误 .

“C:\ Source \ Demo.sln”(默认目标)(1) - >“C:\ Source \ Demo.UI.csproj”(默认目标)(2) - > C:\ Source \ Demo.UI . csproj(185,5):错误:此项目引用此计算机上缺少的NuGet包 . 启用NuGet Package Restore以下载它们 . 有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105 . 丢失的文件是.. \ packages \ Fody.1.25.0 \ build \ Fody.targets .

使用Visual Studio IDE时,如果缺少Fody或任何其他nuget包,则Visual Studio IDE的包管理器本身会成功恢复所有丢失的包 .

有趣的是,如果我在删除NUnit,Prism和Fody nuget包并清除Nuget包缓存后运行MSBuild命令行,除了Fody nuget包之外,所有其他包(NUnit和Prism)都已成功恢复 . 但不是Fody .

根据NuGet Package Restore does not fetch Build Target Assemblies (Tools)参考,我知道在1.13.0.0之前的所有Fody nuget软件包版本都存在nuget下载问题 . 同样在该链接中建议我将Fody nuget包引用添加到我的解决方案中的所有项目,并尝试构建解决方案,但它再次完成构建失败 . (我没有安装以前的版本,因此无需从Tools / Fody文件夹中删除任何内容 - 如_2715850中所述)

我检查了所有其他已知可能的情况并最终没有成功 .

我不知道我在这里失踪了什么 . 有人可以帮我吗?

2 回答

  • 4

    nuget包的推荐方法是使用自动包还原 before 构建而不是在构建期间 . 与MSBuild一起使用时,您可以在实际构建开始之前使用还原选项(在Nuget版本2.7及更高版本中可用),这将下载解决方案使用的所有nuget软件包 .

    更多信息可以在package restore找到,特别是在MSBuild中包含的命令行包恢复部分

    此方法不仅适用于基于Jenkins的CI,也适用于TFS或任何其他CI服务器 . Fody包的作者Simon推荐相同的approach

  • 2

    根据您在Jenkins中构建构建作业的方式,您可以在构建步骤中执行非常简单的批处理 .
    enter image description here

    批处理文件可以是您在构建服务器上与所有作业共享的内容,也可以是项目特定的内容 . 我倾向于每个项目有一个 .

    ..\.nuget\NuGet.exe Install <your-package-to-restore> -OutputDirectory ..\packages
    

相关问题