【问题标题】:Visual Studio 2012 does not load files in a project included using wildcardsVisual Studio 2012 不加载使用通配符包含的项目中的文件
【发布时间】:2013-05-17 18:15:30
【问题描述】:

我使用通配符在我的.csproj 文件中包含了一些文件(手动编辑.csproj 文件),如下所示:

<ItemGroup>
    <Compile Include="Class1.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="..\..\**\Foo???Class.cs" />
</ItemGroup>

它完美无缺。但是当我在另一个目录中创建整个代码树的副本时,它突然停止工作。当我打开我的原始目录时,它可以工作,但是当我在另一个目录中打开副本时,VS 说:

无法将文件“....**\Foo???Class.cs”添加到项目中。 指定路径包含无效字符,是绝对路径, 或者是项目目录之外的路径。

为什么会这样?我该如何解决这个问题?

【问题讨论】:

  • 在您的其他项目中工作?带问号的文件?您是否尝试过从文件中删除问号?我什至不知道您是如何使用该名称的文件,Windows 不允许您命名带有问号的文件。
  • @tnw 这是有效的语法,是的。请参阅msdn.microsoft.com/en-us/library/vstudio/ms164283.aspx,/**/ 表示“递归的任何目录”,/*/ 表示“任何目录”,* 和 ? 也有其正常含义(文件名通配符)。此外,/ 和 `\` 显然可以互换使用。
  • @Doug 你复制了项目树的哪一部分?你在哪里复制的?据我们所知,`..\..` 会尝试向下导航到驱动器的根目录及其下一层。
  • 哦,有趣——我知道通配符*,但在这种情况下不知道?。我为那些愚蠢的问题道歉。感谢您带我去学校:D
  • 请注意那些是为 msbuild 记录的。不一定与 IDE 认为合理的匹配。尝试此操作时我没有看到明显的故障模式,最好将其发布到 connect.microsoft.com

标签: c# visual-studio-2012 csproj


【解决方案1】:

看起来 Visual Studio 对文件夹名称的长度有限制。

新目录(我放置复制代码的位置)名称为 42 个字符。当我将它的名称减少到 20 个字符时,通配符就神奇地起作用了,就像在原始代码树中一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多