如何使用Package转换.csproj中packagerreference属性的Include属性值.道具文件?<



在我的解决方案中,我使用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。

相关内容

  • 没有找到相关文章

最新更新