1

複数のファイルを作成する Visual Studio 用のカスタム項目テンプレートを作成しようとしています。これらのファイルのうちの 2 つは、Resource.resxfile と対応する 'Resource.Designer.cs' ファイルです。

ファイル内でこの宣言を使用して、それらを親子ファイルとして表示することができました.vstemplate

<ProjectItem ItemType="EmbeddedResource" TargetFileName="$fileinputname$Resources.resx" ReplaceParameters="true">Resources.resx</ProjectItem>
<ProjectItem TargetFileName="$fileinputname$Resources.resx\$fileinputname$Resources.Designer.cs" ReplaceParameters="true">Resources.Designer.cs</ProjectItem>

Resource.resxこれも埋め込みリソースとして宣言されています。

私が今得ている問題は、このテンプレートでアイテムを作成した後、Resource.resxファイルが分離コード ファイルとして使用されないことです。Resources.Designer.csファイルに新しいリソース文字列を追加するとすぐに、Visual Studio がその時点からコード ビハインドとして使用Resource.resxする新しいファイルが作成されます。Resources1.Designer.cs

.csprojVisual Studio が新しいコード ビハインド ファイルを作成する前後にファイルに加えられた変更を調べたところ、ファイルの<LastGenOutput>エントリがなかったことが主な理由であることがわかりましたResource.resx

手動で実行せずにファイルをコードビハインド ファイルに接続する方法または他の方法を宣言する方法はあり<LastGenOutput>ますか?.vstemplate.resx

4

2 に答える 2

1

このテンプレートは既にVisualStudioに含まれているため、なぜこのテンプレートが必要なのかは明確ではありません。プロジェクト+新しいアイテムの追加+一般+リソースファイルで選択します。

あなたがそれをカスタマイズしたいなら、あなたの最善の策は既存のものから始めることです。C:\ Program Files(x86)\ Microsoft Visual Studio xx \ Common7 \ IDE \ ItemTemplatesCache \ CSharp \ General \ 1033 \ Resource.zipに移動します。ここで、xxはVSバージョン番号であり、使用しない場合は1033が異なる場合があります。 VSの英語版。

そこにある.vstemplateファイルを投稿します。ファイルをコピーして貼り付けて、自分で開始してください。

<?xml version="1.0" encoding="utf-8"?>
<VSTemplate Version="3.0.0" Type="Item" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
  <TemplateData>
    <Name Package="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="2390" />
    <Description Package="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="2391" />
    <Icon Package="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="4565" />
    <TemplateID>Microsoft.CSharp.Resource</TemplateID>
    <ProjectType>CSharp</ProjectType>
    <RequiredFrameworkVersion>2.0</RequiredFrameworkVersion>
    <NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>
    <DefaultName>Resource.resx</DefaultName>
  </TemplateData>
  <TemplateContent>
    <ProjectItem>Resource.resx</ProjectItem>
    <CustomParameters>
      <CustomParameter Name="$itemproperties$" Value="CustomTool" />
      <CustomParameter Name="$CustomTool$" Value="ResXFileCodeGenerator" />
    </CustomParameters>
  </TemplateContent>
  <WizardExtension>
    <Assembly>Microsoft.VisualStudio.Editors, Version=9.0.0.0, Culture=Neutral, PublicKeyToken=b03f5f7f11d50a3a</Assembly>
    <FullClassName>Microsoft.VisualStudio.Editors.ResourceEditor.ResxItemWizard</FullClassName>
  </WizardExtension>
</VSTemplate>

さらにファイルを追加する場合は、<ProjectItem>要素を追加します。

于 2013-01-06T23:13:54.747 に答える
1

親子関係は、次のように、C# プロジェクト ファイル (.csproj) でDependendUponタグを使用して宣言する必要があります。

<Project ...>
   ...
    <ItemGroup>
      ...
        <EmbeddedResource Include="Resources.resx">
           ...
        </EmbeddedResource>
        <Compile Include="Resources.Designer.cs">
            <DependentUpon>Resources.resx</DependentUpon>
            ...
        </Compile>
        ...
    </ItemGroup>
 </Project>
于 2013-01-02T10:56:34.653 に答える