【问题标题】:Change packages folder path for Visual Studio NuGet Plugin更改 Visual Studio NuGet 插件的包文件夹路径
【发布时间】:2015-07-04 02:51:56
【问题描述】:

我在svn中有如下目录结构:

/src
    /.nuget
    /SolutionAandB.sln
    /A
        /trunk
            /.nuget
            /ProjectA
                /ProjectA.csproj
                /packages.config
            /packages
            /SolutionA.sln
    /B
        /trunk
            /.nuget
            /ProjectB
                /ProjectB.csproj
                /packages.config
            /packages
            /SolutionB.sln

这使我可以分别部署 A 和 B,同时让我能够使用一个解决方案窗口 (SolutionAandB.sln) 同时处理 A 和 B,而不必同时打开 SolutionA.sln 和 SolutionB.sln。

在 src/.nuget/NuGet.targets 文件中,我的恢复命令如下:

<RestoreCommand>
$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir) -OutputDirectory "$(MSBuildProjectDirectory)\..\packages"
</RestoreCommand>

在构建 SolutionAandB.sln 时,OutputDirectory 参数确保 A 和 B 的包安装在各自的主干文件夹中。但是当我使用 NuGet 插件时,它显示没有安装任何包(即使它们已正确安装在主干/包中)并说:

“此解决方案中缺少一些 NuGet 包。单击以恢复 来自您的在线软件包来源。”

如果我在该消息上单击恢复,它会将所有软件包安装到 src/packages,这不是所需的行为。

这是尝试添加新包(参考提示路径混乱)或使用插件更新现有包(已安装包选项卡显示一个空列表)时出现的问题。

有没有办法让插件查看各自的 trunk/packages 文件夹,而不是 SolutionAandB.sln 中的 src/packages 文件夹?

【问题讨论】:

    标签: visual-studio nuget nuget-package-restore


    【解决方案1】:

    我想,你自己过度劳累了。这里你应该做什么

    /src
        /.nuget
        /packages
        /SolutionForAllProjects.sln
        /Project A
            /.nuget
            /ProjectA.csproj    
        /Project B
            /.nuget
            /ProjectB.csproj
    

    在你的项目中添加 nuget.config

    <config>
        <add key="repositoryPath" value="..\packages" />
    </config>
    

    您可能需要重新添加引用或手动修复它们

    【讨论】:

    • 我考虑改用这种结构,但这对分支不太适用。我们在从主干发布(分支/RC)之前创建一个 RC 分支,这需要在每次创建分支时更新参考提示路径以及存储库路径。
    • @SiddharthShukramani 在我的描述中src 下的所有内容都是一个产品,所有项目都属于它。你要么全部释放,要么什么都不释放。
    • 我们希望能够分别发布 ProjectA 和 ProjectB。所有项目的解决方案主要是为了提高生产力。
    • @SiddharthShukramani,好吧,同样,如果子文件夹中的任何内容都是您的可发布产品,则应将其视为一个单元。如果项目“A”和“B”具有通用组件,则可以将它们构建在“通用”解决方案中,并与第三方类似地对待。我经常看到,大多数有这些问题的人都试图“修复它”,而实际上,项目/解决方案/发布结构必须预先设计。
    猜你喜欢
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 2014-07-15
    • 2018-05-31
    • 1970-01-01
    相关资源
    最近更新 更多