我目前正在使用 TFS2012 和 VS2012 技术来构建和部署 Web 应用程序和非 Web 应用程序。
进行的研究:
- 阅读 Inside the Microsoft Build Engine, Using MSBuild and Team Foundation Build 一书。
- 阅读 Stackoverflow、msdn 和其他论坛以获取有关我的问题的帮助。
不幸的是,我仍然面临这个问题。
当前设置:
我有一个:
- 名为ClassLib1.sln的解决方案
- 解决方案中的Build.proj文件
- 2 解决方案中的项目:
- ClassLib1.csproj - 非 Web 应用程序
- MvcApp1.csproj - Web 应用程序
- 执行构建的构建服务器
- 构建Build.proj文件的构建定义 ( DefaultTemplate.11.1.xaml ) 。
Build.proj文件包含以下配置:
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<DirectoriesToDelete Include="\\server\build\test\MvcApp1" />
<DirectoriesToDelete Include="\\server\build\test\ClassLib1" />
<SolutionsToBuild Include="ClassLib1.sln" />
<ProjectsToPublish Include="MvcApp1\MvcApp1.csproj">
<Properties>
OutputPath=$(MSBuildProjectDirectory)\build\test\ClassLib1\MvcApp1\;
UseWPP_CopyWebApplication=true;
PipelineDependsOnBuild=false;
SkipInvalidConfigurations=true;
DeployOnBuild=true;
DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;
AutoParameterizationWebConfigConnectionStrings=false;
_PackageTempDir=\\server\build\test\MvcApp1
</Properties>
</ProjectsToPublish>
<ProjectsToPublish Include="ClassLib1\ClassLib1.csproj">
<Properties>
OutputPath=\\server\build\test\ClassLib1\
</Properties>
</ProjectsToPublish>
</ItemGroup>
<Target Name="Build">
<RemoveDir Directories="@(DirectoriesToDelete)" />
<MSBuild Projects="@(SolutionsToBuild)" />
<MSBuild Projects="@(ProjectsToPublish)" />
</Target>
</Project>
什么有效:
在本地执行 msbuild(例如msbuild Build.proj /t:Build)时,一切正常。两个项目都被构建并输出到指定的PackageTempDir或OutPutPath。
手头的问题:
但是,一旦我尝试通过构建定义执行构建,那么只有MvcApp1.csproj文件会在指定位置输出。ClassLib1.csproj文件丢失。
我已经尝试了很多东西,到目前为止没有任何效果(除了手动操作)。
请注意,我对此有些陌生,因此可能很容易错过理解或错过的东西。