簡體   English   中英

如何使用 Package.props 文件轉換 .csproj 中 PackageReference 屬性的 Include 屬性值?

[英]How to transform Include attribute value of PackageReference property in .csproj using Package.props file?

在我的解決方案中,我將Package.props文件用於引用包的設置版本。

例如,如果我想將 nuget 包Microsoft.Cool.Package添加到我的解決方案項目之一,我只需在相應的.csproj文件中添加一行:

<PackageReference Include="My.Cool.Package" />

並將另一個添加到Package.props

<PackageReference Update="My.Cool.Package" Version="1.0.1" />

對於本地開發,我有時想替換所有項目中的 nuget 包引用,就像我想要的: <PackageReference Include="My.Cool.Package" />成為<PackageReference Include="../../My.Cool.Package.csproj" />

如何僅通過在Package.props文件中進行相應更改來實現這一點,這將覆蓋所有非本地包包含。

如果您的 .csproj 有

<ItemGroup>
  <PackageReference Include="My.Cool.Package"/>
</ItemGroup>

然后在 Directory.Packages.props 中,您可以使用

<PropertyGroup>
  <HasCoolPackage>@(PackageReference->AnyHaveMetadataValue("Identity", "My.Cool.Package"))</HasCoolPackage>
</PropertyGroup>

並基於此刪除它和其他東西:

<ItemGroup>
  <PackageReference Include="../My.Cool.Package.csproj" Condition="$(HasCoolPackage) == True"/>
  <PackageReference Remove="My.Cool.Package" Condition="$(HasCoolPackage) == True"/>
</ItemGroup>

注意:由於 msbuild 評估順序,這些行必須按所示順序排列,否則 msbuild 將首先刪除包,然后再次評估該屬性,此時它將為 false。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM