你好,
很遗憾,目前在.NET Core和.NET Standard项目中,由于安全原因,NuGet不支持在包安装期间运行自定义脚本,因此没有直接的方法来在更新NuGet包版本时自动更新这些文件路径。
不过,你可以尝试以下方法:
- 不要在.csproj文件中硬编码版本号,而是使用MSBuild属性。这样可以在一个地方定义版本,并在整个项目文件中使用该属性。
<PropertyGroup>
<SipSiVersion>4.0.10</SipSiVersion>
</PropertyGroup>
<PackageReference Include="sip-si" Version="$(SipSiVersion)" />
<Target Name="CopyReferenceDll" AfterTargets="Build">
<Copy SourceFiles="..\..\_Common\packages\sip-si.$(SipSiVersion)\lib\netstandard2.0\Wrapper.dll" DestinationFolder="$(TargetDir)" />
</Target>
- 对于DLL和PDB文件,如果你的包版本遵循一致的命名约定,可以在文件路径中使用通配符版本控制。
<Copy SourceFiles="..\..\_Common\packages\sip-si.*\lib\netstandard2.0\Wrapper.dll" DestinationFolder="$(TargetDir)" />
- 如果你能控制NuGet包(sip-si),可以在包内包含一个.targets文件,其中包含必要的MSBuild逻辑来复制文件,并使用属性正确引用它们。
- 尽管NuGet不再允许在包安装期间运行PowerShell脚本,但你可以使用一个自定义的MSBuild目标,在包恢复后运行以更新引用。
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。 注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。