Configure MSBuild output path
有一个Windows Forms(NET 3.5)项目foo.csproj,其中包含本地化的资源文件。 我使用MSBuild构建项目并创建部署结构:
1 | <MSBuild Projects="foo.csproj" Properties="Configuration=Release;OutputPath=..\\deploy\\foo" Targets="Build" /> |
它将foo.exe和所有本地化的DLL文件复制到
- deploy \ foo \ foo.exe
- deploy \ locales \ ru-RU \ foo.resources.dll
- deploy \ locales \ pt-BR \ foo.resources.dll
有没有一种方法可以配置MSBuild将EXE和DLL文件复制到不同的文件夹?
使用MSBuild命令行,您可以指定输出路径,如下所示:
1 | C:\\Program Files (x86)\\MSBuild\\12.0\\Bin\\MSBuild.exe <path_to_project_file> /t:Build /p:OutDir=c:\\custom_build_out\\;Configuration=PRODUCTION;Platform=x64 |
注意:
资源文件的生成和复制是在内部MSBuild过程中完成的:
据我所知,您无法修改此行为。
在构建步骤之后,您必须移动资源文件。 我建议使用MSBuild社区任务中的
1 2 3 4 5 6 7 | <MSBuild Projects="foo.csproj" Properties="Configuration=Release;OutputPath=..\\deploy\\foo" Targets="Build" /> <CreateItem Include="..\\deploy\\foo\\**\\*.resources.dll"> <Output TaskParameter="Include" ItemName="ResourcesToMove" /> </CreateItem> <Move SourceFiles="@(ResourcesToMove)" DestinationFiles="@(ResourcesToMove->'..\\deploy\\locales\\%(RecursiveDir)\\%(Filename)%(Extension)')"/> |