MSBuild复制Web项目引用而不构建

时间:2012-04-10 17:17:35

标签: c# asp.net msbuild

我希望在解决方案配置中设置为“不构建”的解决方案中有一个Web项目,但我仍然希望将项目的引用(及其依赖项)复制到该项目的bin文件夹中。 sln中有实际构建的类库项目,web项目引用这些项目
我们当前的“构建”只是调用devenv,正是这样做。出于显而易见的原因,我宁愿使用MSBuild
正在寻找手动文件复制的方法(单独或* .dll)。有很多方法可以做到这一点。我正在寻找一种方法来复制devenv.exe给我们的行为 - 根据解决方案文件(见下文)中项目部分的内容自动复制引用(及其依赖项)。

这些参考资料来自本节的解决方案:

Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}")="TheWebProjectName", 
                                                  "Web\Project\Folder", 
                                                  "{1CBD1906-0C2E-4C92-A81D-63C2AD816EA1}"
    ProjectSection(WebsiteProperties) = preProject
        TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0"
        ProjectReferences = "{B125568E-E80C-4080-B8D3-5602B604734C}|Some.Reference.dll;
                             {117E8B0A-F0D6-47D0-BB51-71099969566D}|Some.OtherRef.dll;"
        ...
    EndProjectSection
EndProject

4 个答案:

答案 0 :(得分:1)

您可以使用 MSBuild任务执行此类构建操作:http://msdn.microsoft.com/en-us/library/ms171466(v=vs.80).aspx

在您的具体情况下,您可能会对内置的复制任务感兴趣:http://msdn.microsoft.com/en-us/library/3e54c37h(v=vs.80).aspx

答案 1 :(得分:1)

MSBuild使用目标文件来确定它的构建步骤。查看相关的目标文件,确定MSBuild如何复制这些文件,创建自己的目标文件以及修改构建配置以使用新目标。

相关目标文件:

  • 位置:C:\ Windows \ Microsoft.NET \ Framework \ v $(版本)
  • Microsoft.CSharp.targets
  • Microsoft.Common.targets

相关文件:

答案 2 :(得分:-1)

尝试使用powershell而不是msbuild !! Ria服务也非常依赖powershell命令行开关。

干杯..

答案 3 :(得分:-1)

使用Exec任务调用devenv.exe - 我们一直在为BizTalk解决方案执行此操作,因为旧版本的MSBuild不支持BizTalk项目文件...