有没有办法限制nuget update命令只更新符合特定条件的.proj引用? (或者是一个聪明的解决方法,以达到预期的结果)
方案
我有一个项目文件,根据${Configuration}
引入不同的引用
类型。因此,例如,如果${configuration}
与ProjRef
匹配,则会将某些外部引用设置为ProjectReferences
。如果${configuration}
与标准Release
或Debug
匹配,则会将某些外部参考设置为References
。
这非常有效,直到将nuget添加到混音中。如果我通过命令行运行nuget更新,它将修改${configuration}
条件之外的.proj文件,因此,如果添加的行在 ${configuration}
之后,则覆盖它们条件句。
实施例
在运行Nuget更新之前
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Reference Include="X">
<HintPath>path\1.2.2\X.dll</HintPath>
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'ProjRef|AnyCPU' ">
<ProjectReference Include="X.vbproj">
<Name>X</Name>
</ProjectReference>
</ItemGroup>
运行Nuget更新后:
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'ProjRef|AnyCPU' ">
<ProjectReference Include="X.vbproj">
<Name>X</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Reference Include="X">
<HintPath>path\1.2.3\X.dll</HintPath>
</ItemGroup>
请注意,nuget update添加的行将覆盖特定于配置的行,导致没有项目引用 - 即使使用ProjRef
配置构建。