我有一个解决方案W92.Externals
,其中包含3个项目:
W92.Externals.Domain
(网络标准2.0)W92.Externals.FunctionApps
(网络标准2.0)W92.Externals.FunctionApps.Servicebus
(网络标准2.0)每个项目都已部署到NuGet,并通过NuGet被许多其他微服务/项目使用。
现在在解决方案W92.Externals
中,我决定使用内部依赖项,这意味着W92.Externals.FunctionApps
将具有对W92.Externals.Domain
的依赖关系。
W92.Externals.FunctionApp.csproj
看起来像这样:
<PackageReference Include="W92.Externals.Domain" Version="2019.7.16.139486" />
<PackageReference Include="Microsoft.Azure.ServiceBus" Version="3.3.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="3.0.3" />
<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.26" />
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
现在我的目标是:
1。当我在本地工作时-将W92.Externals.Domain
的依赖项作为项目依赖项,如下所示:
<ItemGroup>
<ProjectReference Include="..\..\..\Common\src\W92.Externals\W92.Externals.Domain.csproj" />
</ItemGroup>
2。部署更改(在发布模式下)时,应从nuget ..包中取出软件包,如上所示:
<PackageReference Include="W92.Externals.Domain" Version="2019.7.16.139486" />
是否有可能实现?
在根文件夹中,我有 nuget.config 文件。也许我可以使用它来解决问题吗?
我在VS 2017中有一个项目。版本15.9.12 这些项目位于“ Microsoft.NET.Sdk”中。
答案 0 :(得分:1)
您应保留常规的ItemGroup
来定义对常规第三方nuget程序包的程序包引用:
<ItemGroup>
<PackageReference Include="Microsoft.Azure.ServiceBus" Version="3.3.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="3.0.3" />
<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.26" />
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
</ItemGroup>
然后使用xx.csproj文件中的msbuild conditions来管理对您自己的W92.Externals.Domain
的依赖性:
<ItemGroup Condition="'$(Configuration)' == 'Debug'">
<ProjectReference Include="..\..\..\Common\src\W92.Externals\W92.Externals.Domain.csproj" />
</ItemGroup>
<ItemGroup Condition="'$(Configuration)' == 'Release'">
<PackageReference Include="W92.Externals.Domain" Version="2019.7.16.139486" />
</ItemGroup>
通过这种方式,建议您每次switch between the Debug and Release mode
之后重新加载项目,以在解决方案资源管理器中刷新UI并避免搞乱设置。
启动VS打开此解决方案时,它将读取项目文件的内容并为您加载相应的参考。
例如,如果默认情况下在debug mode
中打开解决方案,则它将使用项目引用而不是程序包引用。这就是您想要的,但是当您切换到release mode
时,您需要unload the project and reload it in solution explorer
才能加载发布模式的设置。