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

Visual studio 更改Visual Studio NuGet插件的包文件夹路径,visual-studio,nuget,nuget-package-restore,Visual Studio,Nuget,Nuget Package Restore,我在svn中有以下目录结构: /src /.nuget /SolutionAandB.sln /A /trunk /.nuget /ProjectA /ProjectA.csproj /packages.config /packages /SolutionA.sln /B /

我在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,同时使我能够使用一个解决方案窗口(SolutionA和B.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>

$(NuGetCommand)安装“$(PackageConfig)”-源“$(PackageSources)”$(非交互式开关)$(RequiredSentSwitch)-solutionDir$(PaddedSolutionDir)-OutputDirectory“$(MSBuildProjectDirectory)\..\packages”
构建Solutiona和B.sln时,OutputDirectory参数确保A和B的包安装在各自的主干文件夹中。但是当我使用NuGet插件时,它显示没有安装任何软件包(即使它们正确安装在主干/软件包中),并显示:

“此解决方案中缺少某些NuGet软件包。单击以还原 从您的在线软件包来源。”

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

当尝试使用插件添加新软件包(参考提示路径混乱)或更新现有软件包(installed packages选项卡显示空列表)时,这是一个问题


有没有办法让插件查看相应的trunk/packages文件夹,而不是solutiona和b.sln中的src/packages文件夹?

我想,你工作过度了。这是你应该做的

/src
    /.nuget
    /packages
    /SolutionForAllProjects.sln
    /Project A
        /.nuget
        /ProjectA.csproj    
    /Project B
        /.nuget
        /ProjectB.csproj
并在您的项目中添加nuget.config

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


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

我认为您工作过度了。这是你应该做的

/src
    /.nuget
    /packages
    /SolutionForAllProjects.sln
    /Project A
        /.nuget
        /ProjectA.csproj    
    /Project B
        /.nuget
        /ProjectB.csproj
并在您的项目中添加nuget.config

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


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

我考虑改用此结构,但这对分支不太有效。我们在从主干发布(Branchs/RC)之前创建一个RC分支,这将需要引用提示路径以及存储库路径,以便在每次创建分支时更新。@SiddharthShukramani在我的描述中,
src
下的所有内容都是一个产品,所有项目都属于它。你要么发布全部,要么什么都不发布。我们希望能够分别发布ProjectA和ProjectB。所有项目的解决方案主要是为了提高生产率。@SiddharthShukramani,好吧,再次强调,如果子文件夹中的任何内容都是您的可发布产品,那么应该将其作为一个单元来处理。若项目“A”和“B”有公共组件,那个么可以在“公共”解决方案中构建这些组件,并将其与第三方进行类似的处理。我经常看到的是,大多数有这些问题的人都试图“修复它”,而实际上,项目/解决方案/发布结构必须提前设计。我考虑过使用这种结构,但这种结构在分支机构中不太管用。我们在从主干发布(Branchs/RC)之前创建一个RC分支,这将需要引用提示路径以及存储库路径,以便在每次创建分支时更新。@SiddharthShukramani在我的描述中,
src
下的所有内容都是一个产品,所有项目都属于它。你要么发布全部,要么什么都不发布。我们希望能够分别发布ProjectA和ProjectB。所有项目的解决方案主要是为了提高生产率。@SiddharthShukramani,好吧,再次强调,如果子文件夹中的任何内容都是您的可发布产品,那么应该将其作为一个单元来处理。若项目“A”和“B”有公共组件,那个么可以在“公共”解决方案中构建这些组件,并将其与第三方进行类似的处理。我经常看到,大多数有这些问题的人,试图“修复它”,而实际上,项目/解决方案/发布结构必须提前设计。