【问题标题】:NuGet when sharing projects between solutions在解决方案之间共享项目时使用 NuGet
【发布时间】:2017-02-23 09:55:06
【问题描述】:

我有几个共享某些常见项目的解决方案,例如一个包含访问我的数据模型所需的所有东西的解决方案。

实际的问题是,尝试在具有依赖项的一个项目(例如 Iesi.Collections)中使用 NuGet 安装包时,会在当前解决方案目录而不是项目目录中创建对 dll 的引用。然后,当我尝试使用另一个解决方案时,共享项目无法编译(因为缺少程序集)。

我已经四处寻找以独立方式在解决方案之间的共享项目中使用 NuGet。

所以问题是......我如何管理在 NuGet 中的解决方案之间获得独立的行为和引用?

【问题讨论】:

  • 你真的用一堆空格来命名你的项目吗?
  • @WimOmbelets 它被称为隐私......任何项目名称中都没有空格

标签: c# .net visual-studio nuget


【解决方案1】:

解决此问题的另一种方法是修改 .csproj 文件中的包引用路径,例如使用 $(SolutionDir) 宏 - 这将在两个解决方案中将引用指向正确的目录:

<ItemGroup>
    <Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
        <HintPath>
            $(SolutionDir)packages\Newtonsoft.Json.10.0.3\lib\net40\Newtonsoft.Json.dll
        </HintPath>
    </Reference>
    ...
</ItemGroup>

【讨论】:

  • 这应该是公认的答案,就像一个魅力。
【解决方案2】:

解决此问题的一种方法是将.nuget\NuGet.config 文件添加到所有解决方案中,并将repositoryPath 设置为指定的本地文件夹。

来自this link,假设您使用的是 VS2015:

  1. 在解决方案的根目录(在文件系统上)创建一个 .nuget 文件夹(如果您在使用 Windows 资源管理器创建 .nuget 文件夹时遇到问题,您可以通过输入 .nuget. 来实现)

  2. 在该文件夹中,创建一个文件 NuGet.config。

  3. 在 Visual Studio 2015 中,右键单击解决方案并添加一个名为“.nuget”的新解决方案目录

  4. 右键单击该文件夹并选择添加新的现有文件并选择在 (2) 中创建的 NuGet.config 文件。

  5. 在 NuGet.config 文件中添加这样的内容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
  <config>
    <add key="repositoryPath" value="..\..\..\..\NugetPackages" />
  </config>
</configuration>
  1. 重启 Visual Studio

请注意,您必须修复现有引用,例如通过删除然后再次添加所有包。

我个人使用包的绝对路径,因为并非我的所有解决方案都在同一个文件夹层次结构中 - 如果你在一个团队中,你可能想先讨论这个。

【讨论】:

  • 这听起来是个好主意,虽然我不知道为什么这不是供应商直接提供的。 VS 2017好像不行,那我该怎么办呢?
猜你喜欢
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多