有一个带有本地化资源文件的winforms(NET 3.5)项目foo.csproj。我使用msbuild来构建项目并创建部署结构。
<MSBuild Projects="foo.csproj" Properties="Configuration=Release;OutputPath=..\deploy\foo" Targets="Build" />
它复制foo.exe和所有本地化的dll来部署\ foo文件夹,但我需要将本地化的dll复制到单独的文件夹中,它应该是:
有没有办法配置msbuild将exe和dll复制到不同的文件夹?
答案 0 :(得分:26)
使用MSBuild命令行,您可以指定输出路径,如下所示;
C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe /t:Build /p:OutDir=c:\custom_build_out\;Configuration=PRODUCTION;Platform=x64
注意:
答案 1 :(得分:3)
资源文件生成和复制在构建期间在内部MSBuild进程中完成:GenerateSatelliteAssemblies
和CopyFilesToOutputDirectory
。它们将复制到输出目录中。
据我所知,您无法修改此行为。
您必须在构建步骤后移动资源文件。我建议您使用MSBuild community tasks中的Move
任务。
<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)')"/>