(不是可以通过 nuget 包部署数据而不使用程序集吗?,因为包结构在过去 12 年里发生了变化)
我有一些大型测试数据文件,我想将它们部署到相对于使用它们的测试项目的已知位置。这不是为了发布或部署,只是在开发期间。重要的是,我能够指定文件的相对位置(即 not 内的 OutputDir 或 bin/x64/Debug/net6.0 等),但由于我控制了包和消费者的两侧,我很高兴能够在任一侧指定它。
为了 CI 方便,这应该在正常的 dotnet 恢复中发生。如果它需要一个构建阶段,则不应重新复制文件,除非它们已更改。
(子问题:最详细的“dotnet Restore”文档在哪里?似乎有很多神奇的包文件夹被定义来做各种事情?)
以下是在开发过程中将大型测试数据文件部署到与测试项目相关的已知位置的几种方法,确保 CI 兼容性和高效复制:
1。在测试项目中使用自定义目标:
<Target Name="CopyTestData" AfterTargets="Build">
<Copy SourceFiles="@(TestData)" DestinationFolder="$(ProjectDir)TestData\%(RecursiveDir)%(Filename)%(Extension)" SkipUnchangedFiles="true" />
</Target>
<ItemGroup>
<TestData Include="..\TestData\**\*" />
</ItemGroup>
2。在预构建期间复制文件:
Copy-Item -Path "..\TestData\*.*" -Destination "$(ProjectDir)TestData" -Recurse -Force
3.利用单独的包:
4。使用恢复后脚本:
.csproj
文件中。关键考虑因素:
其他提示:
SkipUnchangedFiles="true"
可最大程度地减少冗余副本。