小编Art*_*kov的帖子

在 Target 块之外使用 MSBuild PropertyGroup

我有一个项目文件集合:

<ItemGroup>
  <ApplicationToDeploy
    Include="Frontend.WebSite.csproj;11.WebServices.csproj;22.WebServices.csproj"/>
  <ApplicationToDeploy
    Include="33.WebServices.csproj;44.WebServices.csproj;Workflow55Svc.csproj"/>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

我正在尝试收集这些项目的 .config 文件:

<Target Name="111">
  <PropertyGroup>
    <Cfgs>@(ApplicationToDeploy->'%(RootDir)%(Directory)*.config')</Cfgs>
  </PropertyGroup>

  <ItemGroup>
    <InputConfigs Include="$(Cfgs)" />
  </ItemGroup>

  <Message Text="Cfgs: @(InputConfigs)"/>
</Target>
Run Code Online (Sandbox Code Playgroud)

Target块内一切正常(我看到 Web.Configs、App.Configs、Log4net.Configs 等的集合):

Cfgs: C:\Sources\WebServices\11\WebServices\11.WebServices\Web.config;C:\Sources\WebServices\22\WebServices\22.WebServices\web.log4net.config;C:\Sources\WebServices\33\WebServices\33.WebServices\web.environment.config
Run Code Online (Sandbox Code Playgroud)

但是我想在Target块之外初始化这个ItemGroup。像这样:

<PropertyGroup>
  <Cfgs>@(ApplicationToDeploy->'%(RootDir)%(Directory)*.config')</Cfgs>
</PropertyGroup>

<ItemGroup>
  <InputConfigs Include="$(Cfgs)" />
</ItemGroup>

<Target Name="111">
  <Message Text="Cfgs: @(InputConfigs)"/>
</Target>
Run Code Online (Sandbox Code Playgroud)

当我在 Target 块之外执行此操作时,我会得到以下信息:

Cfgs: C:\Sources\WebServices\11\WebServices\11.WebServices\*.config;C:\Sources\WebServices\22\WebServices\22.WebServices\*.config;C:\Sources\WebServices\33\WebServices\33.WebServices\*.config
Run Code Online (Sandbox Code Playgroud)

我不明白发生了什么。是否有可能在Target块之外获得相同的结果?

msbuild

6
推荐指数
1
解决办法
1544
查看次数

标签 统计

msbuild ×1