MSBuild—确定解决方案';s_发布了电子网站

MSBuild—确定解决方案';s_发布了电子网站,msbuild,Msbuild,我正在编写一个web开发目标文件,并希望以编程方式确定出现在“\u PublishedWebsites”下面的目录的名称 我目前必须使用这个: $(BinariesRoot)\%(ConfigurationToBuild.FlavorToBuild)\\u PublishedWebsites\MyWebApplication 有什么想法吗 (我不会将此用于包含多个要发布的网站的解决方案)在.NET 4.0中,新的Web发布管道(WPP)具有控制输出位置的方法 首先,您需要在CopyWebAppl

我正在编写一个web开发目标文件,并希望以编程方式确定出现在“\u PublishedWebsites”下面的目录的名称

我目前必须使用这个:

$(BinariesRoot)\%(ConfigurationToBuild.FlavorToBuild)\\u PublishedWebsites\MyWebApplication

有什么想法吗


(我不会将此用于包含多个要发布的网站的解决方案)

在.NET 4.0中,新的Web发布管道(WPP)具有控制输出位置的方法

首先,您需要在CopyWebApplication目标执行期间选择加入WPP。在命令行或MSBuild项目文件中设置以下MSBuild属性:

<PropertyGroup>
    <UseWPP_CopyWebApplication>True</UseWPP_CopyWebApplication>
    <PipelineDependsOnBuild>False</PipelineDependsOnBuild>
</PropertyGroup>
接下来,在与项目相同的目录中创建一个新的MSBuild目标文件,并将其命名为“ProjectName.wpp.targets”,其中“ProjectName”是项目的文件名,减去扩展名。换句话说,如果你有“MyWebsite.csproj”,你需要创建“MyWebsite.wpp.targets”。我发现将目标文件添加到项目中也很有帮助。这不是必需的,但它使编辑更容易

在新的目标文件中,需要覆盖WebProjectOutputDir属性。仅在调用CopyWebApplication时执行此操作-换句话说,当“OutDir”从“OutputPath”重定向时:


你找到解决办法了吗?是的。升级到TFS 2010,并使用C#而不是MSBuild:)定制构建)啊,我们尝试了TFS2010,但它没有提供我们所需的一切,所以我们转移到FogBugz,Chile,我正在为CI设置一些CCNet项目。如果我们是SharePoint开发人员,能够快速开发TFS所需的自定义部件,我们可能已经能够使用该部件了。。。
/p:UseWPP_CopyWebApplication=True /p:PipelineDependsOnBuild=False
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <WebProjectOutputDir Condition="'$(OutDir)' != '$(OutputPath)'">$(OutDir)Websites\MyCustomFolderName</WebProjectOutputDir>
    </PropertyGroup>
</Project>
msbuild MyWebsite.csproj /p:OutDir=C:\Development\WebOutputTest\