Я понял, что в моем коде C # / F # я могу загрузить информацию о любом проекте .NET, используя
collection.LoadProject(path_to_my_proj_file)
, где collection
имеет тип ProjectCollection
. Затем я могу получить доступ ко всем свойствам и элементам, определенным в проекте, и всем его зависимостям. В качестве примера я могу получить доступ ко всем файлам, включенным через Compile
следующим образом
project.GetItems "Compile"
Давайте предположим, что я хочу определить пользовательскую ItemGroup в моем файле fsproj:
<?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 \ ** \ *» вместо определенных файлов, которые соответствуют шаблону, тоже хорошо.