gpt4 book ai didi

c# - 加载包含作为通配符的项的 .NET 项目

转载 作者:行者123 更新时间:2023-11-30 17:27:50 25 4
gpt4 key购买 nike

我发现在我的 C#/F# 代码中,我可以使用以下方法加载有关任何 .NET 项目的信息

collection.LoadProject(path_to_my_proj_file)

其中 collectionProjectCollection 类型。然后我可以获得对项目中定义的所有属性和项目及其所有依赖项的访问权限。例如,我可以通过以下方式访问通过 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 中明确定义它们(即没有通配符)。

有没有办法让我也发现使用通配符包含的文件?我什至很高兴以 Unresolved 形式获得它们。因此,获取“TestFiles\**\*”而不是匹配模式的特定文件也很好。

最佳答案

找到解决方案。

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

事情是这样的:在我的应用程序中,我不使用普通的 collection.LoadProject ,而是一个更复杂的库。是的 - 图书馆做了一些导致问题的神奇事情。

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

这里的教训是:编写适当的 MCVE 很重要 - 会为我(可能还有你)节省一些时间。很抱歉有问题,伙计们!

关于c# - 加载包含作为通配符的项的 .NET 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54134090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com