bit*_*ift 5 msbuild visual-studio .net-core
我相信这更多是一个与 msbuild 相关的问题。拥有一个 .net core 应用程序,我需要有条件地发布一个文件,并根据 Visual Studio 2019 中选择的构建配置,应在发布到目标之前重命名该文件。
所以我正在考虑修改 csproj 文件(这只是一个 msbuild 文件本身)我在复制任务 https://learn.microsoft.com/en-us/visualstudio/msbuild/copy-task 上没有看到条件选项?查看=vs-2019
我的目标是,如果我有 3 个不同的文件
tester-notes.dev.json tester-notes.debug.json tester-notes.prod.json
如果选择 prod 作为构建配置,我希望发布的文件为 tester-notes.prod.json,但重命名为 tester-notes.json
假设开发时解决方案资源管理器中有三个文件(构建操作=无):
FileSystem如果您使用发布模式,您可以使用类似于此脚本的内容来重命名并复制到发布文件夹:
<ItemGroup Condition="$(Configuration)=='Dev'">
<FileToRename Include="$(ProjectDir)\tester-notes.dev.json" />
</ItemGroup>
<ItemGroup Condition="$(Configuration)=='Debug'">
<FileToRename Include="$(ProjectDir)\tester-notes.debug.json" />
</ItemGroup>
<ItemGroup Condition="$(Configuration)=='Prof'">
<FileToRename Include="$(ProjectDir)\tester-notes.prof.json" />
</ItemGroup>
<Target Name="DoSthAfterPublish1" AfterTargets="Publish" Condition="$(Configuration)=='Dev'">
<Copy SourceFiles="@(FileToRename)" DestinationFiles="@(FileToRename->Replace('.dev.json','.json'))"/>
<Move SourceFiles="$(ProjectDir)\tester-notes.json" DestinationFolder="$(PublishDir)" OverwriteReadOnlyFiles="true"/>
</Target>
<Target Name="DoSthAfterPublish2" AfterTargets="Publish" Condition="$(Configuration)=='Debug'">
<Copy SourceFiles="@(FileToRename)" DestinationFiles="@(FileToRename->Replace('.debug.json','.json'))"/>
<Move SourceFiles="$(ProjectDir)\tester-notes.json" DestinationFolder="$(PublishDir)" OverwriteReadOnlyFiles="true"/>
</Target>
<Target Name="DoSthAfterPublish3" AfterTargets="Publish" Condition="$(Configuration)=='Prof'">
<Copy SourceFiles="@(FileToRename)" DestinationFiles="@(FileToRename->Replace('.prof.json','.json'))"/>
<Move SourceFiles="$(ProjectDir)\tester-notes.json" DestinationFolder="$(PublishDir)" OverwriteReadOnlyFiles="true"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
如果可以重置tester-notes.debug.json为tester-notes.Debug.json,,那么我们可以使用 来将三个目标合二为一DestinationFiles="@(FileToRename->Replace('.$(Configuration).json','.json'))"。希望它能有所帮助:)
此外:
根据Intellisense我们可以找到Copy task支撑Condition:
| 归档时间: |
|
| 查看次数: |
5868 次 |
| 最近记录: |