C# 如何复制NuGet软件包本机库文件?
我有一个NuGet包,这个托管库依赖于本机库。 我想将本机依赖项复制到\\UnmanagedLibraries\Windows\x86\文件夹,我已创建了以下文件,并将其复制到生成文件夹:C# 如何复制NuGet软件包本机库文件?,c#,nuget,post-build,C#,Nuget,Post Build,我有一个NuGet包,这个托管库依赖于本机库。 我想将本机依赖项复制到\\UnmanagedLibraries\Windows\x86\文件夹,我已创建了以下文件,并将其复制到生成文件夹: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="CopyNativeReferences"> <Message Text="$(MSBuild
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CopyNativeReferences">
<Message Text="$(MSBuildThisFileDirectory) => $(OutDir)\UnmanagedLibraries\Windows\x86\"></Message>
<Copy SourceFiles="$(MSBuildThisFileDirectory)..\native\UnmanagedLibraries\Windows\x86\SIMDArrayInstructions.dll"
DestinationFolder="$(OutDir)\UnmanagedLibraries\Windows\x86\"
SkipUnchangedFiles="true" />
</Target>
<PropertyGroup>
<AfterBuildDependsOn>
CopyNativeReferences;
</AfterBuildDependsOn>
</PropertyGroup>
<Target Name="AfterBuild" DependsOnTargets="$(AfterBuildDependsOn)"/>
</Project>
复制参考;
对于一个包来说,它运行得很好,但我有多个NuGet包需要复制它们的本机引用。安装第二个包后,第一个包的本机引用不会被复制。似乎“后构建”被新包覆盖了
我还更改了目标名称和AfterBuildDependsOn,以确保其他包不共享目标变量的相同名称,但这并没有帮助
我如何解决这个问题 定义的属性组应如下所示:
PropertyGroup>
<AfterBuildDependsOn>
$(AfterBuildDependsOn);
CopyNativeReferences;
</AfterBuildDependsOn>
</PropertyGroup>
PropertyGroup>
$(AfterBuildDependsOn);
复制参考;
更好的方法是使用。我们注意到,我们的目标有时没有被调用,无法复制,但这种情况经常发生,即使在运行之间没有任何变化,您是否遇到过类似的问题?我们有时在构建环境中没有运行它时遇到问题。事实证明,这与我们如何进行包恢复有关。如果使用MSBuild调用下载/还原包,目标文件将不会执行该运行(导入已运行,因此MSBuild不会看到新文件)。我们在调用MSBuild之前添加了一个恢复包的步骤,从而解决了这个问题。新的TFS模板会自动执行此操作,但当时我们使用的是旧模板。