【发布时间】:2019-01-10 17:35:30
【问题描述】:
我发现,在我的 C#/F# 代码中,我可以使用任何 .NET 项目加载信息
collection.LoadProject(path_to_my_proj_file)
其中collection 的类型为ProjectCollection。然后我可以访问项目中定义的所有属性和项及其所有依赖项。例如,我可以通过以下方式访问通过Compile 包含的所有文件
project.GetItems "Compile"
假设我想在我的 fsproj 文件中定义一个自定义 ItemGroup:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
<ItemGroup>
<MyGroup Include="Test.txt" />
<MyGroup Include="TestFiles\**\*" />
</ItemGroup>
</Project>
一些cmets:
-
MyGroup是我的自定义集合标识符。我发现这样的事情是允许的 - “TestFiles”文件夹包含 4 个文件,它们都存在于某些子文件夹中,但它们都与“TestFiles\**\*”模式匹配
当我使用开头提到的方法加载项目并运行时
project.GetItems "MyGroup"
我只得到一项,即“Test.txt”。除非我在 fsproj 中明确定义(即没有通配符),否则不会发现其他文件。
有没有办法让我发现使用通配符包含的文件?我什至很高兴让它们以未解决的形式出现。所以获取“TestFiles\**\*”而不是匹配模式的特定文件也很好。
【问题讨论】:
标签: c# .net f# msbuild msbuild-api