1

我想在解决方案配置中设置为“不构建”的解决方案中有一个 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

4 回答 4

2

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

相关目标文件:

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

相关文件:

于 2012-04-20T14:07:46.040 回答
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

于 2012-04-13T17:00:00.770 回答
-1

尝试使用 powershell 而不是 msbuild !Ria 服务还强烈依赖于 powershell commandlet。

干杯..

于 2012-04-16T20:42:31.913 回答
-1

使用 Exec 任务调用 devenv.exe - 我们一直为 BizTalk 解决方案这样做,因为旧版本的 MSBuild 不支持 BizTalk 项目文件......

于 2012-04-17T16:06:21.063 回答