将解决方案相对软件包文件夹与NuGet和project.json一起使用

凯巴特尔

我有一个将packages文件夹签入源代码管理的解决方案我更改了一些项目,以使用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您可以将完整路径设置为备用全局软件包文件夹,但是我发现,如果仅将变量设置为“ packages”,则Visual Studio中的NuGet工具会将其视为解决方案文件夹下的相对路径。这使我可以使用解决方案的packages文件夹安装和还原NuGet软件包

不幸的是,构建项目给我带来了错误Microsoft.NuGet.targets,无法找到NuGet软件包。NugetPackagesDirectorymsbuild中属性似乎未设置。要解决此问题,我在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>\packages文件夹具有不同的结构,并且在更新或卸载之后,不会删除旧版本或未使用的软件包。手动清除程序包目录,然后在进行任何更改后还原所需的程序包将实现相同的目的。

就个人而言,这确实很麻烦,因为它需要为应基于每个解决方案设置的内容设置全局设置。NuGet将在某个时候进行更新,以支持每个解决方案包目录,project.json但与此同时,您可以使用上面的解决方法,或者packages.config暂时坚持使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用“ nuget.exe恢复解决方案”时,软件包文件夹中的版本号错误

当多个解决方案中包含某些项目时,为所有解决方案设置一个公共的nuget软件包文件夹

.Net Standard 2.0生成NuGet软件包,包括同一解决方案中的项目和NuGet软件包

一起使用Argparse和Json

将* ngIf与JSON一起使用

您如何在解决方案中找到未使用的NuGet软件包?

您如何在解决方案中找到未使用的NuGet软件包?

在解决方案中的项目上使用时缺少NuGet软件包

将Spark软件包与RStudio一起使用

将JSON文件与chart.js一起使用

使用VSTS使用VSTS软件包和旧式csproj构建解决方案

是否可以将签名的RestSharp NuGet软件包与Twilio一起使用?

在具有两个项目的一个解决方案文件中安装不同版本的nuget软件包

将FutureBuilder与本地JSON一起使用时出错

将ajax与数据类型json一起使用

将 PostgreSQL row_to_json 与 jOOQ 一起使用

如何使用nuget.exe命令行获取特定Visual Studio解决方案的软件包列表

将功能文件夹与Prism一起使用

将GPU与python软件包bert_embeddings和mxnet一起使用失败

更改Visual Studio 2017使用的NuGet软件包文件夹

将swagger JSON API定义与不同的主机名和方案一起使用

将TypeScript与tsconfig.json文件一起使用时,是否可以包含json文件?

使用pip将Python软件包从本地文件系统文件夹安装到virtualenv

使用Appengine和Go时的子文件夹和软件包

将 settings.json 文件与 Node.js 和 pkg 一起使用

如何将Laravel分隔的“后端”和公用文件夹与Git一起使用?

如何通过.net MVC解决方案将CI服务器与外部配置文件一起使用

如何将AJV与依赖的json方案一起使用?

创建引用解决方案中另一个软件包的软件包