0

プロジェクト テンプレート ファイルで行っているインポートの成功を追跡するために使用できるブール値を格納するために、XML レベルでプロジェクト テンプレートにカスタムの名前付き属性を作成しようとしています。

プロジェクト テンプレート ファイルの属性を次のように宣言できるようにしたいと考えています。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" InitialTargets="TestImports" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Attributes>
    <Attribute Name="ImportedProp" Value="False" />
  </Attributes>
  <Import Condition="Exists('..\SomeProj.props')" ImportedProp="true" Project="..\SomeProj.props" />
  <Target Name="TestImports">
  <Error Text="Unable to find Common Properties." Condition="'$(ImportedProp)' == true" />
  </Target>

属性を宣言する上記の方法は、残念ながら有効ではありません。Visual Studio はまったく気に入りません。正常にコンパイルされますが、テンプレートを使用して Visual Studio で新しいプロジェクトを作成しようとするとエラーが発生します。

したがって、属性名「ImportedProp」(例: Imported Properly) を作成し、インポートが成功した場合にインポート呼び出し中にそれを true として設定できるようにしたいと考えています。

次に、すべてのインポート呼び出しの後、属性「ImportedProp」がまだ false である場合、エラーが発生する可能性があります。

問題は、私の知る限り、vstemplate または csproj テンプレートの XML だけで独自の属性を宣言する方法がないことです。私が提案したように使用できる Visual Studio 2010 テンプレートのカスタム属性を作成する方法を知っている人はいますか?

vstemplate または csproj テンプレート XML で属性を宣言すると、Visual Studio が vstemplate または csproj XML ファイルの属性タグを認識しないというエラーが発生します。

私は通常、これほど単純であるべきことについて誰かに迷惑をかけることはありませんが、盲目であるか、Google に間違ったキーワードを入力しているかのどちらかですが、これを行う方法の解決策や例が見つかりません。

4

1 に答える 1

0

結局のところ、これらのインポートをチェックする別の方法があります。カスタム属性を作成することはできませんが、プロジェクト プロパティ (.props) またはプロジェクト ファイルで値を作成することはできます。

<PropertyGroup>
<SettableVal> *Value* </SettableVal>
</PropertyGroup>

その後、好きなように使用できます。プロジェクト ファイルまたはテンプレート全体で、インポート、参照インクルードなどを制御します。

于 2012-08-22T22:18:56.860 に答える