Nuget Package restore with git submodule

后端 未结 4 1978
北海茫月
北海茫月 2020-12-09 17:29

i have a project where i include 2 submodules from git. Both projects have \"nuget package restore\" enabled, the parent project too. The package folder in the two included

相关标签:
4条回答
  • 2020-12-09 17:43

    Found the answers: For anyone interrested:

    http://www.xavierdecoster.com/how-to-nuget-package-restore-when-sharing-projects-between-solutions

    and

    NuGet not getting missing packages

    0 讨论(0)
  • 2020-12-09 17:48

    you can use symbolic link: After nuget downloads all packages to solution's packages directory, create symbolic link in submodule's root directory (names packages and link to the solution level packages directory). In short - in your startup project add Pre-Build event that creates symbolic link between your solution packages directory to all your submodules packages directory:

    This is the batch:

    SET sourceDir=$(SolutionDir)packages
    SET destDir=$(SolutionDir)..\..\submodules\saturn72\src\packages
    
    if not exist %sourceDir% mkdir %sourceDir%
    
    if not exist %destDir% mklink /j %destDir% %sourceDir%
    

    Full explanation and source code: SolutionWithGitSubmodulesAndNuget

    0 讨论(0)
  • 2020-12-09 18:01

    Nuget is restoring the package in the opened solution directory.

    You can edit the .csproj of the submodule project and modify package dll references from :

       <ItemGroup>
        <Reference Include="Microsoft.Rest.ClientRuntime, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
          <HintPath>..\packages\Microsoft.Rest.ClientRuntime.2.1.0\lib\net45\Microsoft.Rest.ClientRuntime.dll</HintPath>
          <Private>True</Private>
        </Reference>
    

    to :

     <ItemGroup>
    <Reference Include="Microsoft.Rest.ClientRuntime, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>$(SolutionDir)\packages\Microsoft.Rest.ClientRuntime.2.1.0\lib\net45\Microsoft.Rest.ClientRuntime.dll</HintPath>
      <Private>True</Private>
    </Reference>
    

    Hope this help!

    0 讨论(0)
  • 2020-12-09 18:01

    If you're using VS2015 Update 1 or later, you can convert your project to use project.json to fix this.

    In short:

    • Run Uninstall-Package <package name> -Force -RemoveDependencies for all your packages. You may wanna copy-paste your packages.config in notepad before you do this.
    • Delete packages.config from the project, save the project, unload
    • Edit the project file and remove:
      • Any referenced .props files at the top related to nuget
      • Any <Reference> elements that reference a package
      • The .targets files at the bottom that reference nuget - usually starts with: <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
      • If your packages contain Roslyn analyzers, make sure to remove them too.
    • Save the file and relod the project

    Add project.json with:

    {
      "dependencies": {
      },
      "frameworks": {
        ".NETFramework,Version=v4.6.1": {}
      },
      "runtimes": {
        "win": {}
      }
    }
    

    Finally add your packages again, either by hand under dependencies or using Install-Package or with the nuget UI in VS.

    I've also had to remove any Microsoft.Bcl.* packages from my projects because they explicitly look for a packages.config file.

    EDIT: this (removing the Microsoft.Bcl.* packages will give you a compile-time error, even though the project will build fine, because the .targets file Microsoft.Bcl.Build adds will still look for packages.config.

    To suppress this, edit your project file and add:

    <SkipValidatePackageReferences>true</SkipValidatePackageReferences>
    

    This needs to go to the first <PropertyGroup> that doesn't have a Condition attribute set. If there isn't one, just add another at the top, like:

    <PropertyGroup>
        <SkipValidatePackageReferences>true</SkipValidatePackageReferences>
    </PropertyGroup>
    
    0 讨论(0)
提交回复
热议问题