【问题标题】:Using msbuild to package a website using Content Items from csproj file使用 msbuild 使用 csproj 文件中的内容项打包网站
【发布时间】:2011-10-24 17:26:48
【问题描述】:

我编写了一个 msbuild 脚本来打包一个 webapp,如下所示:

<Project
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
    ToolsVersion="4.0"
    DefaultTargets="Main">

    <PropertyGroup>         
        <WebAppSourceDir>e:\Web</WebAppSourceDir>
    </PropertyGroup>        

    <Import Project="$(WebAppSourceDir)\WebApp.csproj"/>

    <ItemGroup>
        <BuiltFiles Include="$(WebAppSourceDir)\bin\**\*.*"/>
    </ItemGroup>            

    <Target Name="Main" DependsOnTargets="" >
        <Copy SourceFiles="$(WebAppSourceDir)\%(Content.Identity)"
            DestinationFiles="c:\temp\buildoutput\%(Content.Identity)" Condition="%(Content.Link) == ''"/>

        <Copy SourceFiles="@(BuiltFiles)"
            DestinationFolder="c:\temp\buildoutput\bin\%(RecursiveDir)"/>
    </Target>       
</Project>

这很好用,但是我们在解决方案中构建了多个 Web 项目,并且它们都与同一个更大的 msbuild 项目同时打包。那么,我怎样才能在任何时候专门询问给定 csproj 文件的内容项呢?

或者...有什么更好的方法来做我想要实现的目标?

谢谢。

【问题讨论】:

    标签: msbuild csproj


    【解决方案1】:

    您是否考虑过使用 Web 部署项目?然后您可以调用 Packaging 目标。

    http://blogs.msdn.com/b/webdevtools/archive/2010/04/14/visual-studio-2010-web-deployment-projects-beta-avail-now.aspx

    【讨论】:

    • 是的,这就是我们目前正在使用的,但我不喜欢它,包和副本是我们唯一依赖的部分,所以我正在尝试自己重新创建它。跨度>
    • @Gaz - 你为什么不直接将这些 MSBuild 任务导入到你自己的目标文件中,然后随心所欲地利用它们呢?
    • @Gaz - 让我知道它是怎么回事......我以一种通用的方式使用 Web.config 转换任务将它应用到 App.config 和 silverlight WCF clientConfig 文件,它就像一个魅力.
    • 我无法忍受这种配置转换。为我的喜好添加一个新项目太麻烦了。我自己写的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 2011-09-15
    相关资源
    最近更新 更多