version-control - 将解决方案相关包文件夹与 NuGet 和 project.json 一起使用

标签 version-control visual-studio-2015 nuget nuget-package-restore project.json

我有一个 packages 的解决方案文件夹已 checkin 源代码管理。我将一些项目更改为使用 project.json文件而不是 packages.config用于定义依赖项。项目一切正常.csproj项目,而不是 DNX .xproj项目。一切似乎都正常工作,但是在更新软件包后,我注意到新版本没有添加到解决方案的 packages 中。文件夹。相反,它被添加到用户配置文件文件夹中 NuGet 的新共享包文件夹中。

所以问题是,如何让 NuGet 使用解决方案的 packages文件夹而不是共享文件夹?

到目前为止我尝试过的方法没有成功:

  • 添加 global.json解决方案文件夹中的文件指定 "packages": "packages"
  • 设置 <add key="disableSourceControlIntegration" value="false" />.nuget\nuget.config
  • 最佳答案

    NuGet 3.2添加了对使用环境变量指定共享全局包文件夹的支持,NUGET_PACKAGES .您可以将完整路径设置为备用全局包文件夹,但是我发现如果您只是将变量设置为“包”,那么 Visual Studio 中的 NuGet 工具会将其视为解决方案文件夹下的相对路径。这使我能够使用解决方案的 packages 安装和恢复 NuGet 包。文件夹。

    不幸的是,构建项目在 Microsoft.NuGet.targets 中给了我错误,无法找到 NuGet 包。 NugetPackagesDirectory msbuild 中的属性似乎没有设置。为了解决这个问题,我在 C:\Program Files (x86)\MSBuild\Microsoft\NuGet\Microsoft.NuGet.props 中添加了以下几行文件:

    <PropertyGroup Condition="'$(NugetPackagesDirectory)' == ''">
      <NugetPackagesDirectory>$(SolutionDir)packages</NugetPackagesDirectory>
    </PropertyGroup>
    

    这将影响机器上的所有解决方案,因此另一种方法是在每个项目文件或自定义 props 中添加相同的行。导入到每个项目的解决方案中的文件。构建服务器也可能需要这样做。

    虽然这有效,但缺点是包文件夹具有不同的结构,packages\<package_name>\<version>\packages\<package_name>.<version>\ 相比,并且旧版本或未使用版本的包在更新或卸载后不会被删除。手动清除包目录,然后在任何更改后恢复所需的包将达到同样的效果。

    就个人而言,这感觉真的很hacky,因为它需要为应该在每个解决方案基础上设置的东西设置全局设置。 NuGet 将在某个时候更新以支持每个解决方案包目录 project.json但与此同时,您可以使用上述解决方法,或者坚持使用 packages.config暂且。

    关于version-control - 将解决方案相关包文件夹与 NuGet 和 project.json 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35307155/

    相关文章:

    visual-studio-2015 - #region 的 VS2015 主题颜色

    c++ - 安装 VS2015 Update 3 后无法编译针对 WinXP 的新项目

    azure - Azure 函数升级错误

    git - 如何为 nuget 包设置 Azure DevOps CI 构建/发布管道(高级)

    c# - 从 REST Web API 应用程序创建 nuget 包

    svn - svn 合并是幂等的吗?

    sql-server - 将 ERWin 模型与 Visual Studio 2008 GDR 2/2010 db 项目同步

    c# - "Debugging lambda expressions with Visual Studio"不再工作?

    svn - Cordova 准备/构建从源代码管理 (SVN) 取消绑定(bind) WWW 文件夹

    visual-studio - AnkhSVN 与 VisualSVN