这可能是常见问题解答,但即使经过大量搜索,我们也无法找到解决方案。
我们有许多msbuild文件都在同一组源文件上运行。 (它并不是特别相关,但它们可以编译为完全不同的平台。)为了使这些管理变得更简单,我们希望将<Compile>
源文件名移动到单独的文件中,并从所有msbuild文件中引用它们。
我们尝试剪切包含<ItemGroup>
项目的<Compile>
并将其粘贴到新文件中,并用
<Project DefaultTargets="Build" ToolsVersion="3.5"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
然后使用
从原始文件引用该文件 <Import Project="Common.files.csproj" />
但这不起作用 - 解决方案打开(因为我们破解了默认配置时出现警告),但解决方案资源管理器中没有显示任何项目。
我们做错了什么?
答案 0 :(得分:10)
尝试使用Visual Studio 2010:
1)创建外部.proj(或.target)文件并添加文件(我使用了不同的项目名称,但这无关紧要)
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ExternalCompile Include="Program.cs" />
<ExternalCompile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
</Project>
2)将您的外部.proj文件导入Visual Studio项目文件的顶部:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="MyExternalSources.proj" />
<PropertyGroup>
...
并修改Compile
ItemGroup,如下所示:
...
<ItemGroup>
<Compile Include="@(ExternalCompile)" />
</ItemGroup>
...
警告:您必须将新项目/文件添加到外部.proj文件中 - 从Visual Studio中添加的所有项目/文件最终都会如下所示:
...
<ItemGroup>
<Compile Include="@(ExternalCompile)" />
<Compile Include="MyNewClass.cs" />
</ItemGroup>
...
答案 1 :(得分:0)
我从未见过“包含”文件与MSBuild一起使用。显然,Targets文件以这种方式工作,但我没有看到另一个包含的部分msbuild文件。你可以使用如下所示的方法吗? http://msdn.microsoft.com/en-us/library/ms171454(VS.80).aspx
使用通配符是我过去解决这个问题的方法。