代码之家  ›  专栏  ›  技术社区  ›  LA.27

加载包含通配符项的.NET项目

  •  3
  • LA.27  · 技术社区  · 5 年前

    我发现在我的C/F代码中,我可以使用

    collection.LoadProject(path_to_my_proj_file)
    

    哪里 collection 是一种 ProjectCollection . 然后,我可以访问项目中定义的所有属性和项及其所有依赖项。例如,我可以通过 Compile 以下列方式

    project.GetItems "Compile"
    

    假设我想在我的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 是我的自定义集合标识符。我发现这样的事情是允许的

    当我使用开始时提到的方法加载项目并运行

    project.GetItems "MyGroup"
    

    1 回复  |  直到 5 年前
        1
  •  1
  •   LA.27    5 年前

    找到了解决办法。

    首先,让我说问题在我这边。事实上,通常当您尝试加载项目时,它也会加载所有文件。即使是用通配符定义的,只要ofc与模式匹配。

    这里的交易是:在我的应用程序中,我不使用平原 collection.LoadProject

    在这种情况下,问题很简单:所有的*.cs | fs]proj文件都被复制到 C:\temp\<random_folder_name> . 只有*[cs | fs]proj文件-没有更少,没有更多。结果,当项目加载器尝试评估解决方案时,没有模式匹配的文件,导致零元素。