我已经发现,在我的 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>
一些评论:
MyGroup
是我的自定义集合标识符。我发现这样的事情是允许的- “TestFiles”文件夹包含 4 个文件,它们都存在于某些子文件夹中,但它们都匹配模式“TestFiles\**\*”
当我使用开头提到的方法加载项目并运行时
project.GetItems "MyGroup"
我只得到一项,即“Test.txt”。除非我在 fsproj 中明确定义它们(即没有通配符),否则不会发现其他文件。
有没有办法让我也发现使用通配符包含的文件?我什至很高兴让它们以未解决的形式出现。因此,获取“TestFiles\**\*”而不是匹配模式的特定文件也可以。