MSBuild:将路径转换为命名空间

发布于 2024-09-29 03:16:37 字数 393 浏览 1 评论 0原文

我有这样的项目列表:

<ItemGroup>
    <ToCompile Include="clojure\core.clj;clojure\set.clj;clojure\zip.clj;clojure\test\junit.clj;"/>
</ItemGroup>

我想将其转换为这样的项目列表:

clojure.core clojure.set clojure.zip clojure.test.junit

有没有办法通过 MSBuild 转换来做到这一点?我尝试过,但只能获取文件名;扩展名和根路径,我可以更改分隔符。但不是路径分隔符。

如果没有,任何其他避免使用自定义任务的解决方案都是值得赞赏的。

I have list of items like this:

<ItemGroup>
    <ToCompile Include="clojure\core.clj;clojure\set.clj;clojure\zip.clj;clojure\test\junit.clj;"/>
</ItemGroup>

And I want to transform that to a list of items like this:

clojure.core clojure.set clojure.zip clojure.test.junit

Is there a way to do this with MSBuild transforms? I tried but I can only get at the file name; the extension and the root path, and I can change the separator. But not the path separators.

If not, any other solution that avoids using custom tasks is appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

喜爱纠缠 2024-10-06 03:16:39

这有点俗气,但它适用于 MSBuild 4.0+。

<Target Name="Namespaces">
  <PropertyGroup>
    <Cheesy>@(ToCompile -> '%(relativedir)%(filename)', ' ')</Cheesy>
  </PropertyGroup>
  <Message Text="$(Cheesy.Replace(`\`, `.`))" />
</Target>

This is a bit cheesy, but it works in MSBuild 4.0+.

<Target Name="Namespaces">
  <PropertyGroup>
    <Cheesy>@(ToCompile -> '%(relativedir)%(filename)', ' ')</Cheesy>
  </PropertyGroup>
  <Message Text="$(Cheesy.Replace(`\`, `.`))" />
</Target>
热血少△年 2024-10-06 03:16:38

我们可以用更少的奶酪轻松做到这一点:

<消息
Text="$([System.String]::Copy('%(ToCompile.Identity)').Replace('.clj','').Replace('\','.'))"/>;

We can do it easily with fewer cheese:

<Message
Text="$([System.String]::Copy('%(ToCompile.Identity)').Replace('.clj','').Replace('\','.'))"/>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文