【问题标题】:MSBuild, include files based on a group of pathsMSBuild,包含基于一组路径的文件
【发布时间】:2011-09-13 09:27:30
【问题描述】:

我正在尝试创建一个构建脚本,它允许我指定特定网站中包含的“模块项目”的路径列表。

因此,我有这样的布局:

customer folder
    |_MainProject
    |_ModuleProject1
    |_ModuleProject2

所以,基本上我希望能够指定一个包含 ModuleProject1 和 2 的 ItemGroup,并将相关文件从中复制到 MainProject。

<ItemGroup>
  <CustomModule Include="ModuleProject1\*.csproj" />
  <CustomModule Include="ModuleProjec2\*.csproj" />
</ItemGroup>

然后,在我的主构建脚本中,我想找出我的附属程序集的路径,以及驻留在项目的 obj\Release*.dll 文件夹中的所有 dll。

我已经有项目文件(.csproj)的项目组,所以基本上我只想添加更多文件引用。但我不知道我会怎么做。这就是我今天拥有的:

<Satellites Include="$(ReferencesFolder)\??\*.dll" />
<Satellites Include="$(SiteRoot)\bin\??\*.dll" />
<Satellites Include="%(CustomModule.RelativeDir)obj\$(Configuration)\??\*.dll" />

根据我所拥有的事实,我将如何着手完成最后一行?

当这样做时:

<Message Text="%(CustomModule.RelativeDir)obj\$(Configuration)\??\*.dll" />

它输出这个:

ModuleProject1\obj\Release\??\*.dll
ModuleProject2\obj\Release\??\*.dll

如果有人有一些关于 MSBuild 基础知识的链接以及很好的示例,我将不胜感激。我总是在 msdn 找到一些非常神秘的例子,这些例子并没有真正解释太多。

编辑:我修改了我的计划并且几乎可以正常工作,但是包含并没有像我期望的那样真正工作。没有包含任何内容,但有一些文件计算路径。

如果我手动添加:

<Satellites Include="ModuleProject1\obj\Release\??\*.dll" />

它实际上包含在“卫星”项目组中。

【问题讨论】:

    标签: visual-studio-2010 msbuild build msbuild-4.0


    【解决方案1】:

    自己找到了一个解决方案,似乎我需要一个解决方法才能让它明确工作。

    由于我无法包含基于另一个项目列表的项目,这就是我最终想出的:

    <Target Name="BuildModules">
        <!-- We do this because we need a property with the correct wildcards, otherwise it won't work -->
        <PropertyGroup>
            <CustomModuleSatellites>@(CustomModule->'%(RelativeDir)obj\$(Configuration)\??\*.dll')</CustomModuleSatellites>
        </PropertyGroup>
        <ItemGroup>
            <Satellites Include="$(CustomModuleSatellites)" />
        </ItemGroup>
    </Target>
    

    我需要在目标中创建一个属性(在它之外它没有飞行,因为它仍然包含通配符),然后使用该属性在我的项目列表中包含使用通配符的文件,否则它将是带有通配符的路径,然后复制命令也不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 2014-10-21
      • 2021-07-11
      • 2012-08-04
      相关资源
      最近更新 更多