gpt4 book ai didi

asp.net - 如何在 CI 服务器上的 ASP.NET 网站中使用 NuGet 包

转载 作者:行者123 更新时间:2023-12-03 21:56:39 27 4
gpt4 key购买 nike

我有许多 ASP.NET Web 窗体网站(没有 .csproj 文件的网站),我正在尝试弄清楚如何最好地将 NuGet 包与它们一起使用。使用 Visual Studio 2015 时,通过 UI 添加 NuGet 包可以正常工作(站点根目录中有一个 packages.config),并且构建会将二进制文件放到 bin 文件夹中。

问题是试图通过 MSBuild 在 TeamCity 上构建项目。对于其他项目,我可以将 NuGet.exe 与还原命令(针对 csproj 或 sln 文件)一起使用,并且包已正确下载并包含在输出中。但是,这不适用于网站,因此由于缺少文件而导致编译失败。

作为最后的手段,我可​​以编写一个自定义脚本/构建步骤来手动将程序集复制到 bin 文件夹,但我想避免这种情况。我错过了什么吗?有没有办法在 Visual Studio 之外的网站上使用 NuGet?

最佳答案

一段时间后,我有一个解决方法可以让我到达我需要的地方,尽管不是最好的方式。

在较新版本的 Visual Studio 中,当通过 VS 将二进制依赖项添加到网站时,它会将 (binaryfile).dll.refresh 文件与二进制文件一起添加到 bin 文件夹中。该文件的内容是通过解决方案的包文件夹到 .dll 的相对路径。此外,还向网站添加了一个packages.config 文件。

让它在 CI 服务器上构建的方法是:

  • 忽略(.gitignore、.hgignore)网站的 bin 文件夹
  • 在 bin 文件夹中显式添加 .refresh 文件
  • 在实际构建之前,调用 NuGet 还原,将路径传递到网站的 packages.config 并将 PackagesDirectory(或 SolutionDirectory)设置为解决方案的包文件夹
  • 预编译,MSBuild 将打开每个刷新文件,并从文件中包含的位置复制文件。

  • 这不是一个很好的解决方案,因为我现在必须多次调用 NuGet restore(一次用于解决方案,一次用于每个网站),但它确实有效。我不知道支持多远的 .refresh 文件,但它在 2015 年确实有效。我可能会在 NuGet 中提出更改请求,以允许通过命令行传入多个解决方案/packages.configs。

    谢谢,
    埃里克

    关于asp.net - 如何在 CI 服务器上的 ASP.NET 网站中使用 NuGet 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32812914/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com