3


単一のプロジェクトに対して多くの構成があるので、.csprojを少しクリーンアップしたいと思いました。
すべての構成定義をConditionalItemGroupを使用して単一のファイルに移動し、それらを.csprojに次のようにインポートしました。

<Import Project="conf/file.targets">

ソリューションエクスプローラーでは、.targetsで定義されているファイルは表示されませんが、プロジェクトは問題なくコンパイルされます。それはバグですか、それとも通常の動作ですか?.targetsからインポートされたファイルを確認するにはどうすればよいですか?(つまり、SomeFileとSomeFile2。)
test.targetsの例:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'TestConfig|x86'">
    <OutputPath>bin\TestConfig\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <Optimize>true</Optimize>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
    <ErrorReport>prompt</ErrorReport>
  </PropertyGroup>

  <ItemGroup Condition=" '$(Configuration)'=='TestConfig' ">
    <Compile Include="SomeFile.cs" />
    <Compile Include="SomeFile2.cs" />
  </ItemGroup>

</Project>

.csprojで定義されたとき、すべてがSolutionExplroerに表示されていました。

PS。googleとstackoverflowで検索しましたが、役立つ情報が見つかりませんでした。

4

1 に答える 1

0

Visual StudioでのMSBuildファイルの使用は、MSBuildの機能のサブセットです。

特に、VSはプロジェクトファイルを理解できるように構造化しますが、有効なVSプロジェクトファイルではない有効なMSBuildファイルを持つ可能性は十分にあります。VSを使用してプロジェクトコンテンツを管理する場合は、VSが使用および理解するMSBuildのサブセットに固執する必要があります。

于 2011-03-13T09:35:48.287 に答える