我最近将我们的构建平台从建立在耙子上的古老构建平台(不要问,认真地)迁移到使用msbuild的构建平台。因为我们的许多团队成员不使用Visual Studio(同样,不要问),他们习惯于能够将.cs文件放入项目文件夹中,并让它神奇地作为构建的一部分出现。如何防止Visual Studio 2012扩展MSBuild 4通配符?
因此,该项目的.csproj的文件包括以下行:
<ItemGroup>
<Compile Include="**\*.cs" Exclude="obj" />
</ItemGroup>
通过直接的MSBuild编译时,这个伟大的工程。然而,当我打开Visual Studio中的项目,它决定“有益”扩大通配符成文件的完整列表,似乎只要我打开它:
<ItemGroup>
<Compile Include="Controller.cs" />
<Compile Include="MyClass.cs" />
<Compile Include="MyClass2.cs" />
<Compile Include="etc/etc/Something.cs" />
<!-- and so forth -->
</ItemGroup>
虽然在技术上仍然工作,这也导致悲伤,因为它消除了通配符的能力。
我试着实现a technique shown on this page,但我无法用简单的编译工作。
有没有人有过这个问题?有什么办法可以解决这个问题吗?
编辑:为了澄清我所说的“无法得到它的工作”的意思是,这是我做的:
在Main.csproj,我有这样的:
<!-- References in here -->
</ItemGroup>
<Import Project="Imports.proj" />
<ItemGroup>
<!-- ProjectReferences down here -->
然后,我创建Imports.proj,与此:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Compile Include="**\*.cs" Exclude="obj" />
</ItemGroup>
</Project>
当我在Visual Studio中打开Main.csproj,它不显示任何文件。这可能是<Import>
行错了?
编辑2:有趣的是,它仍然通过Visual Studio构建,它不会将文件显示为项目的一部分。你做
链接文章中显示的技术应该做的很好afaik:导入一些.proj文件,其中你有'<编译包含=“** \ *。cs”排除=“obj”/>'。你究竟做了什么?你确定你把进口放在正确的地方吗? – stijn
@stijn我刚刚更新了我试过的问题 –
根据你的'编辑2':是的,我忘了提及那部分:文件不会显示在VS中,我不知道解决这个问题的方法。有一个VS项目当然不会有用。但是考虑到这一点恐怕就是项目的处理方式了:在第一种情况下VS为你修正了通配符,否则它可能无法在解决方案资源管理器中显示这些文件。在第二种情况下,它不会更改任何内容,但不会显示任何文件。不知道是否有解决方案。如果不是,最好的办法可能是一个小工具来从模板生成项目文件并插入所有的cs文件... – stijn