更改Visual Studio NuGet插件的包文件夹路径

时间:2015-07-04 02:51:56

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

我在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文件中,我的restore命令如下:

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

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

  

&#34;此解决方案中缺少某些NuGet包。点击恢复   来自您的在线软件包来源。&#34;

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

尝试添加新软件包(引用提示路径搞砸了)或使用插件更新现有内容时出现问题(已安装的软件包选项卡显示空列表)。

有没有办法告诉插件查看相应的trunk / packages文件夹而不是SolutionAandB.sln中的src / packages文件夹?

1 个答案:

答案 0 :(得分:0)

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

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

在你的项目中nuget.config add

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

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