gpt4 book ai didi

msbuild - msbuild的隐藏功能

转载 作者:行者123 更新时间:2023-12-02 08:34:26 24 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,请 visit the help center 寻求指导。




10年前关闭。










锁定。这个问题及其答案是 locked 因为这个问题离题但具有历史意义。它目前不接受新的答案或交互。








这周我对 msbuild 很感兴趣。我正在清理许多极其复杂的构建脚本。深入挖掘它的功能让我感到惊讶 - msbuild 本身就是 .NET 编程的一个隐藏特性。

在问题必须有答案的 SO 约定中,在几天或一周内,我会将最有用或最酷的隐藏功能标记为已接受。

   let bestAnswer suprise slick useful = (surprise + slick + 2*useful)

有用的定义:我正在更新现有的 msbuild 脚本:打包(zip 文件)网站和实用程序、CC.NET 集成、启动测试(UT + selenium)、构建数据库。我正在添加(新目标,甚至更有用):部署到 VMWare 虚拟服务器,链式构建(立即快速构建,排队慢速测试)。如果您引用外部库(如 MSBuild community tasks ),最好知道如何获取它。

我已经发现了一些 msbuild 惊喜。
  • Hello world 使用 Message 任务和属性。
  • 使用 msbuild 作为极其复杂的服务器产品的安装程序。 MSB community tasks 托管 IIS 服务器设置。 WriteLinesToFileXmlUpdate 任务编写服务器特定的配置文件。如果您使用过 MSI,您就会知道安装时任何东西都比 MSI 更好。
  • 对于新手:CSProj 和 Vbproj 文件与 msbuild "proj"文件相同。直接编辑:卸载您的 csproj 或 vbproj,然后右键单击项目并选择编辑。这比使用笨重的预构建/构建后事件更好、更强大。
  • MSBuild 附带通用 .NET 安装。与其他花哨的工具不同,您可以在完全干净的服务器/桌面上使用它。

  • 这是msbuild Hello World
    在我写完之后,我找到了 MSDN hello world
    <?xml version="1.0" encoding="utf-8"?>
    <Project DefaultTargets="Build;Test" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
    <Who>World</Who>
    </PropertyGroup>
    <Target Name="Hello">
    <Message Text="Hello, $(Who)" Importance="high" ></Message>
    </Target>
    <Target Name="Build" DependsOnTargets="Hello"/>
    <Target Name="Test"/>
    </Project>

    最佳答案

    MSBuild 有许多不错的功能。我喜欢

    递归文件规范

    <Files Include="$(src)\**\*.cs" Exclude="$(src)\**\*test.cs" />

    批处理和项目元数据
    <ItemGroup>
    <F Include="SampleApplication.t">
    <Version>1</Version>
    </F>
    <F Include="SampleApplication2.t">
    <Version>1</Version>
    </F>
    <F Include="SampleApplication3.t">
    <Version>2</Version>
    </F>
    </ItemGroup>
    <Target Name="Build">
    <Touch Files="%(F.FullPath)" AlwaysCreate="True"
    Condition=" '%(F.Version)' > '1' ">
    <Output TaskParameter="TouchedFiles" ItemName="CreatedFiles"/>
    </Touch>
    <Message Text="Created files = @(CreatedFiles)"/>
    <Message Text="%(F.Identity) %(F.Version)"/>
    </Target>

    目标级别依赖分析
    <Target Name="Build"
    Inputs="@(MyItems)"
    Outputs="@(MyItems -> '$(MyItems)\%(filename).dll'">

    关于msbuild - msbuild的隐藏功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/846098/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com