我在.NET 4.6.1框架上運行ASP.NET Core應用程序。我有1個解決方案,其中包含多個項目。所有的項目都是類庫,它們通過.csproj中的PackageReferences引用對方(這樣我們就可以獨立地構建,打包和版本化)。但是,我希望能夠測試它們之間的集成,而無需首先將它們推送到NuGet - 也就是我想在解決方案中將它們用作ProjectReferences,但是在通過Jenkins構建過程構建它們時使用PackageReferences以便版本化組件分開。Nuget衝突的項目引用和packagereference
當.NET Core基於project.json時,這工作得很好。我會將該版本設置在project.json的頂部,如果該解決方案中存在該版本的項目,則會將其引用爲項目,否則會在我的NuGet源中查找它。
使用ProjectReferences的問題在於,所有項目在構建併發送到NuGet時都會得到相同的版本。
有沒有辦法在csproj中做到這一點?找一個項目參考,如果它存在,否則看看NuGet?
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<VersionPrefix>1.3.0</VersionPrefix>
<TargetFramework>net461</TargetFramework>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<AssemblyName>MyProject1</AssemblyName>
<PackageId>MyProject1</PackageId>
<NetStandardImplicitPackageVersion>1.6.1</NetStandardImplicitPackageVersion>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MyProject2" Version="1.4.0-*" />
<PackageReference Include="Microsoft.AspNetCore.Http" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Hosting.Abstractions" Version="1.1.1" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net461' ">
<Reference Include="System" />
<Reference Include="Microsoft.CSharp" />
</ItemGroup>
</Project>
上面是一個示例,如果解決方案中存在1.4.0,我希望MyProject2被ProjectReference引用。
你找到答案了嗎?我也遇到了這個問題。我有兩個獨立的nuget庫。它的核心庫和驗證庫可以獨立進行版本管理,但可以在一個存儲庫和構建/測試過程中進行管理。 –