【问题标题】:Reinstall NuGet packages for ASP.NET Website outside Visual Studio在 Visual Studio 之外为 ASP.NET 网站重新安装 NuGet 包
【发布时间】:2017-10-17 13:54:21
【问题描述】:

我的 ASP.NET 网站没有 .csproj 文件(它不是 Web 应用程序),只有 .sln 文件。在 root 中是 packages.config 定义了几个 NuGet 包。

调用nuget restore .\packages.config -PackagesDirectory .\packages 将包下载到packages 文件夹,但bin 文件夹为空。

nuget update 需要 .csproj。

如果我在命令行中调用网站构建,它会抛出找不到 DLL 的错误。如果我保留bin\*.refresh,它也不起作用。

谢谢

【问题讨论】:

  • 默认情况下,构建项目会恢复 NuGet 包。如果这不起作用,那么您可以在解决方案资源管理器中添加对这些包的引用。或者,您可以创建一个新项目并选择 ASP.NET Web 应用程序并将所有内容复制到该项目。

标签: c# asp.net msbuild nuget


【解决方案1】:

对于希望复制到bin 目录的每个包,您需要有一个.refresh 文件。

例如,我们在我们的一个网站中有一个MvcSiteMapProvider.MVC2 的自定义版本。

packages.config

<package id="Mvc2" version="2.0.1" targetFramework="net35" />
<package id="MvcSiteMapProvider.MVC2.Core" version="4.6.18.1" targetFramework="net35" />

/Bin 文件夹

System.Web.Mvc.dll.refresh
MvcSiteMapProvider.dll.refresh

注意:让您的源代码控制提供商识别这些可能会很棘手。当您将项目克隆到一个干净的目录时,请确保它们在那里。

System.Web.Mvc.dll.refresh

..\..\packages\Mvc2.2.0.1\lib\net35\System.Web.Mvc.dll

MvcSiteMapProvider.dll.refresh

..\..\packages\MvcSiteMapProvider.MVC2.Core.4.6.18.1\lib\net35\MvcSiteMapProvider.dll

您可能需要根据文件夹结构调整项目中..\ 的数量,但这是我们能够成功恢复的内容。

【讨论】:

  • 现在可以使用了。一件棘手的事情是我只调用了忽略“*.refresh”文件的“aspnet_compiler”,因此它一直无法获取 NuGet 包。现在我调用“msbuild SolutionFile.sln”,然后调用“aspnet_compiler”,它就完成了。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 2021-01-07
  • 2017-12-11
  • 2019-07-23
相关资源
最近更新 更多