Mik*_*ron 11 msbuild visual-studio-2012
我最近将我们的构建平台从一个古老的构建平台迁移到rake之上(不要严肃地问),使用msbuild.因为我们的许多团队成员不使用Visual Studio(再次,不要问),他们习惯于将.cs文件放入项目文件夹中,并且只是将其作为构建的一部分神奇地出现.
因此,此项目的.csproj文件包括以下行:
<ItemGroup>
<Compile Include="**\*.cs" Exclude="obj" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
这通过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>
Run Code Online (Sandbox Code Playgroud)
虽然从技术上讲这仍然有效,但它也会导致悲伤,因为它会消除通配符.
我尝试实现了这个页面上显示的技术,但我无法使用简单的编译.
以前有人有这个问题吗?有什么方法可以解决这个问题吗?
编辑:澄清我的意思是"无法让它工作",这就是我所做的:
在Main.csproj中,我有这个:
<!-- References in here -->
</ItemGroup>
<Import Project="Imports.proj" />
<ItemGroup>
<!-- ProjectReferences down here -->
Run Code Online (Sandbox Code Playgroud)
然后,我用这个创建了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>
Run Code Online (Sandbox Code Playgroud)
当我在Visual Studio中打开Main.csproj时,它不显示任何文件.可能是这<Import>条线错了?
编辑2:有趣的是,它仍然通过Visual Studio构建,它只是不显示文件作为项目的一部分.
Sha*_*neC 16
我有完全相同的问题,以至于我在没有注意到你自己的情况下2天后问了完全相同的问题(构建中的.csproj文件中的不必要的更改):
虽然我无法解释为什么VS决定在每次构建项目时都这样做,但我确实有一个解决方案让你尝试,这与我解决问题的方式完全相同:
<PropertyGroup>
<IncludePattern>**\*.cs</IncludePattern>
<ExcludePattern>obj</ExcludePattern>
</PropertyGroup>
<ItemGroup>
<Compile Include="$(IncludePattern)" Exclude="$(ExcludePattern)" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
VS保留属性,而不将通配符扩展为完整的文件列表
| 归档时间: |
|
| 查看次数: |
979 次 |
| 最近记录: |