我有一个项目文件集合:
<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 评估顺序的影响:
在构建的评估阶段:
在构建的执行阶段:
该链接上还有另一个关键点“(...) 字符串扩展取决于构建阶段。”。
您正在使用属性 'Cfgs' 递归映射您的项目文件夹并定义通配符到配置文件(*.config)。当您在目标内部定义 'Cfgs' 时,InputConfigs 会接收 Cfgs 的扩展值(以分号分隔的文件夹字符串列表),并且只解析通配符。另一方面,当您在目标之外定义 'Cfgs' 时,InputConfigs 会收到 Cfgs ( ) 的未扩展值@(ApplicationToDeploy->'%(RootDir)%(Directory)*.cs')。当 InputConfigs 扩展它时,它会生成以分号分隔的文件夹字符串列表,但它不会解析通配符(*.config)。
是否有可能在 Target 块之外获得相同的结果?
我认为 InputConfigs 应该总是接收目录的扩展列表。扩展是在构建的执行阶段进行的。在此阶段,仅评估目标中定义的属性和项目。因此,我会将所有初始化保留在“初始化”目标块中。我并不是说不可能在 Target 块之外进行,但由于提到的原因,这似乎不合逻辑。=]
希望这可以帮助,
| 归档时间: |
|
| 查看次数: |
1544 次 |
| 最近记录: |