【问题标题】:MSBuild - Create a property with wildcards?MSBuild - 创建带有通配符的属性?
【发布时间】:2012-08-31 16:58:31
【问题描述】:

我目前正在将我的项目转移到 Visual Studio 2012 并开始使用 nuget。 所以我将使用“NUnit Runners”nuget 包而不是 nunit 库。

问题在于 nuget 使用包版本创建文件夹。例如,NUnit Runners 在文件夹内: src\packages\NUnit.Runners.2.6.1\

直到现在,Nunit 都在我的 lib\NUnit 文件夹中。 因此,在我的 MSBuild 文件中,我通过指定路径来执行测试:

<PropertyGroup>
    <NUnitFolder>$(MSBuildProjectDirectory)\lib\NUnit</NUnitFolder>
</PropertyGroup>
<NUnit Assemblies="..." ToolPath="$(NUnitFolder)" />

但我不想在我的 msbuild 任务中指定版本号,每次更新 NUnit.Runners 时我都必须更新它。

我尝试使用 CreateProperty,但它似乎不接受通配符。 我也尝试过 ItemGroup,但它适用于文件列表,而不是文件夹。

【问题讨论】:

    标签: msbuild


    【解决方案1】:

    最后,我没有尝试使用通配符创建属性,而是从 packages.config 文件中检索了 NUnit.Runners 的版本。

    我现在有一个像这样的目标:

    <Target Name="GetNUnitFolder">
        <!-- Retrieves the version of NUnit.Runners from the solution's packages.config file -->
        <XmlRead Namespace=""
                 XPath="packages/package[@id='NUnit.Runners']/@version"
                 XmlFileName="$(MSBuildProjectDirectory)\src\.nuget\packages.config">
            <Output TaskParameter="Value" PropertyName="NUnitVersion" />
        </XmlRead>
    
        <CreateProperty Value="$(MSBuildProjectDirectory)\src\packages\NUnit.Runners.$(NUnitVersion)\tools">
            <Output TaskParameter="Value" PropertyName="NUnitFolder" />      
        </CreateProperty>
    </Target>
    

    注意:要能够使用 XmlRead,您需要 MSBuildCommunityTasks。

    一旦我有了版本,我就会重建我的 NUnitFolder 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 2013-04-10
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      相关资源
      最近更新 更多