MSBuild分析项元数据

MSBuild分析项元数据,msbuild,.net-4.0,msdeploy,Msbuild,.net 4.0,Msdeploy,是否仍要修改项目组中的每个项目?例如,给定此项: <_CustomAreas Include="..\My.Project.*\Areas\**\*.*" Condition="'$(AppBuildFolder)' == ''" /> 我想删除“..My.Product.*部分。基本上,我们有包含MVC区域的单独项目,在包/部署(MSDeploy)中,我们想将它们复制到主项目中。下面是使用组的位置: <FilesForPackagingFromProject Inclu

是否仍要修改项目组中的每个项目?例如,给定此项:

<_CustomAreas Include="..\My.Project.*\Areas\**\*.*" Condition="'$(AppBuildFolder)' == ''" />

我想删除“..My.Product.*部分。基本上,我们有包含MVC区域的单独项目,在包/部署(MSDeploy)中,我们想将它们复制到主项目中。下面是使用组的位置:

<FilesForPackagingFromProject Include="%(_CustomAreas.Identity)">
    <DestinationRelativePath>Areas\%(relativedir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>

区域\%(relativedir)%(文件名)%(扩展名)
$(relativedir)
以“.\My.Project.Plugin1\Areas**”的形式出现在包中,最后以
ZipFileRoot\My.Project.Plugin1\Areas
(the..退出硬编码区域,然后它只为plugin\Areas创建文件夹)的形式结束,我希望它最终都位于
ZipFileRoot\Areas

谢谢
Andy

使用MsBuild 4.0,您可以在脚本中直接使用字符串方法(或使用内联任务)。使用此选项,您可以编辑relativedir以删除My.Project.*部分

您可以在本文中看到示例:

任务(凭证:guest/guest)应该能够匹配
\My.Product.*
并替换为空字符串

类似的东西应该可以工作:(未经测试,需要验证转义)



要启动并运行它需要做一点工作,但是有足够的好东西让我觉得值得努力。

项目组中的项目可以有一个Exclude属性,允许您指定要删除的项目。

我也喜欢这个答案,但我不清楚如何操作项目组。这不是我要做的。
<RegexReplace Input="%(_CustomAreas)" Expression="\\My\.Product\..*" Replacement="" Count="-1">
    <Output ItemName="_CustomAreas" TaskParameter="Output" />
</RegexReplace>