如何为构建独立项目配置构建

时间:2014-08-08 09:38:18

标签: asp.net asp.net-mvc visual-studio-2013

我有一个网络项目(asp.net),我有几个模块应该在主项目的文件夹中构建。

我无法找到有关它的信息。

我想构建主项目,所有模块也应该构建,但它们不依赖于主项目。

1 个答案:

答案 0 :(得分:0)

嗯,仍然会涉及一些依赖性。您可以使用MsBuild任务与主项目一起构建项目。有关如何将msbuild脚本包含到解决方案中的几个选项,这是允许更改模块列表而不重新加载MainProject并且不向其添加依赖项的可能方法之一。

假设我们有MainProject和2个模块:ClassLibrary1和ClassLibrary2。像这样创建一个BuildModules.csproj文件:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="BuildModules" ToolsVersion="4.0">
    <ItemGroup>
        <ModuleProject Include="ClassLibrary1\ClassLibrary1.csproj"></ModuleProject>
        <ModuleProject Include="ClassLibrary3\ClassLibrary3.csproj"></ModuleProject>
    </ItemGroup>

    <Target Name="BuildModules">
        <MSBuild Projects="@(ModuleProject)" Properties="OutputPath=..\MainProject\Bin\Debug;Configuration=Debug;" ContinueOnError="true">
        </MSBuild>
    </Target>
</Project>

现在这只是一个概念,所以我已经硬编码到bin \ debug文件夹的路径。 ContinueOnError为真,因此如果发生某些错误,它不会影响MainProject构建过程。将此文件放在解决方案根文件夹中。

现在,在Build Events选项卡的MainProject属性中添加以下预构建命令:

call C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe $(SolutionDir)BuildModules.csproj

msbuild.exe的路径可能会有所不同。

现在每次构建时,它都会重建程序集,您可以轻松更改BuildModules.csproj文件中的模块列表。

更新1:

TFS没有部署所有文件。我想这是因为我们的硬编码路径到msbuild等。尝试将Pre-build命令移动到MainProject.csproj文件中,在BeforeBuild目标中:

<Target Name="BeforeBuild">
    <MSBuild Projects="..\BuildModules.csproj" Properties="Configuration=Debug"/>
</Target>

我不确定路径,但应该是这样的。并从build中删除Pre-build命令。