【问题标题】:Project using NuGet packages included into multiple solutions使用包含在多个解决方案中的 NuGet 包进行项目
【发布时间】:2015-11-23 16:04:11
【问题描述】:

我正在寻找一种在多个 Visual Studio 解决方案中包含的项目中使用 NuGet 包的方法。

示例: 我有两个解决方案 App1 和 App2 都包含一个类库 SharedProj。 结构如下:

├───App1
│   ├───App1
│   └───packages
│       └───NLog
├───App2
│   ├───App2
│   └───packages
│       └───NLog
└───SharedProj
    ├───packages.config

当我将一个包安装到 SharedProj 时,它会被添加到 packages.config。 到目前为止一切顺利……

问题是,这个包会被安装到打开的解决方案的packages目录下。

<Reference Include="Extend, Version=4.2.1, Culture=neutral, processorArchitecture=MSIL">
    <HintPath>..\App1\packages\NLog\lib\net45\NLog.dll</HintPath>
    <Private>True</Private>
</Reference>

例如,如果 App1 解决方案已打开,则包将添加到 App1\packages。 => App2 解决方案中的项目引用 App1 解决方案中的包。 这意味着在我恢复 App1 的包之前,我无法构建 App2。

如何让 NuGet 在这种情况下工作?

【问题讨论】:

    标签: visual-studio-2015 nuget


    【解决方案1】:

    修改此引用的 HintPath 以以 $(SolutionDir) 开头,而不是相对路径。这样,引用将与打开的任何解决方案相关。

    编辑: 如果您不想在安装/更新每个 NuGet 包后更新您的 csproj 文件,您可以使用 repositoryPath 设置在每个解决方案中设置包目录以解决此问题 (stackoverflow.com/q/4092759/2336787)

    【讨论】:

    • 我想过这个,但我不想在安装或更新 NugGet 包时编辑项目文件
    • 您可以使用repositoryPath设置在每个解决方案中设置包目录来解决这个问题(stackoverflow.com/q/4092759/2336787
    • 谢谢,这很好用。如果您将其发布为答案,我将接受它作为正确答案。
    猜你喜欢
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 2011-11-09
    • 2013-03-30
    • 1970-01-01
    相关资源
    最近更新 更多