我是 MSBuild 的新手,但我设法设置了以下简单脚本:
<Project ToolsVersion="3.5" DefaultTargets="Compile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
</PropertyGroup>
<ItemGroup>
<SolutionRoot Include=".." />
<BuildArtifacts Include=".\Artifacts\" />
<SolutionFile Include="..\SolutionName.sln" />
</ItemGroup>
<Target Name="Clean">
<RemoveDir Directories="@(BuildArtifacts)" />
</Target>
<Target Name="Init" DependsOnTargets="Clean">
<MakeDir Directories="@(BuildArtifacts)" />
</Target>
<Target Name="Compile" DependsOnTargets="Init">
<MSBuild Projects="@(SolutionFile)" Properties="OutDir=%(BuildArtifacts.FullPath);Configuration=$(Configuration)" />
<MakeDir Directories="%(BuildArtifacts.FullPath)\_PublishedWebsites\RDE.XAP.UnifiedGui.Web\Temp" />
</Target>
</Project>
该解决方案有 23 个项目,其中 4 个是 WebApp。现在,脚本工作正常并且输出正确生成。我反驳的唯一问题是解决方案中有两个使用 AJAX 控制工具包的 WebApp 项目。该工具包有一组包含本地化资源的文件夹(例如ar、it、es、fr )。在 MSBuild 中构建解决方案时,这些文件夹不会复制到 WebApps 的bin目录中,但在 Visual Studio 中构建时会复制它们。
我怎样才能以干净的方式解决这个问题?我知道我可以编写一个(相当复杂的)任务,在编译后复制目录,但这对我来说似乎不是正确的解决方案。此外,Google、SO 和 MSDN 都无法提供有关此类问题的更多详细信息。