【发布时间】: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