我有一个网络项目(asp.net),我有几个模块应该在主项目的文件夹中构建。
我无法找到有关它的信息。
我想构建主项目,所有模块也应该构建,但它们不依赖于主项目。
答案 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文件中的模块列表。
TFS没有部署所有文件。我想这是因为我们的硬编码路径到msbuild等。尝试将Pre-build命令移动到MainProject.csproj文件中,在BeforeBuild目标中:
<Target Name="BeforeBuild">
<MSBuild Projects="..\BuildModules.csproj" Properties="Configuration=Debug"/>
</Target>
我不确定路径,但应该是这样的。并从build中删除Pre-build命令。