2017-05-22 8 views
2

私はVSとC#で普通のスキルレベルを持っています。私はコードビハインドを持つ.ascxファイルを、そのユーザーコントロールの既存のプロジェクトに追加しようとしています。プロジェクトタイプで新しい「Webユーザーコントロール」を追加できません

UserControls - > Add - > New Itemを右クリックし、 "Web user control"を検索すると、 "No items found"が返されます。

既存の.ascxファイルをコピーして貼り付けると(ダース以上あります)、新しい.ascxファイルが正常に作成されますが、.ascx.csファイルや.ascx.designer.csファイルは添付されておらず、追加方法もありませんそれら。

詳しい情報

コピー「MyUserControl.ascxは、」確かに分離コードファイルをコピーしましたが、彼らは「MyUserControl - Copy.ascx.cs」として、元「MyUserControl.ascx」ファイルの下にコピーされた」と"MyUserControl - Copy.ascx.designer.cs"。これらのファイルの名前を変更または移動することはできません。

プロジェクトからこれらのファイルを削除し、ファイルエクスプローラで名前を変更してファイルに追加しました。プロジェクトを作成し、必要に応じてコードを更新しました。

しかし、ネストされているように見えますが、.ascxファイルと同じレベルです。

はまた、プロジェクト固有のものですので、空白のWebアプリケーションを作成し、そこにそれを追加することができ

を試してみました。

ファイルエクスプローラでファイルをコピーした後に既存のファイルを追加しようとしましたが、VS2015のプロジェクトメニューでもソリューションを直接選択しても、Webアプリケーションオプションには変換されません。今、私は奨励金を計上したことHow do you force Visual Studio to regenerate the .designer files for aspx/ascx files?

+1

ファイルの名前をコピーしたり変更したりすることはできません。クラスと名前空間はオリジナルとして名前が付けられており、生成されたコードは編集しないでください。私はこれが違いを生むのは本当に疑問ですが、代わりに "Webフォームユーザーコントロール"のアイテムテンプレートを検索するとどうなりますか? – Crowcoder

+0

@Crowcoderは依然として何も見つけられません。私には非常に奇妙なものです。 –

答えて

3

によって示唆されているように、私のプロジェクトのために...

項目(た.ascx、.ascx.cs、および.ascx.designer.csファイル)されたらプロジェクトに追加され、目的の変更(Codebehind属性、クラス名など)を反映するようにコンテンツが更新されました。プロジェクト用の.projitemsファイルを編集するだけですt(これはメモ帳++を使用しましたが、問題があるかどうかわかりません)。

あなたはこのような何かを見て2つの行を見つけることができます - 簡単に見つけるためにあなたのファイル名を検索します。

<Compile Include="$(MSBuildThisFileDirectory)MyPath\UserControls\MyUserControl.ascx.designer.cs" /> 
<Compile Include="$(MSBuildThisFileDirectory)MyPath\UserControls\MyUserControl.ascx.cs" /> 

あなたは、彼らがノードに依存していることがわかります他の同様のファイルがある場合。このノードを追加し、VSにリロードあなたが必要なものを取得します:

<Compile Include="$(MSBuildThisFileDirectory)MyPath\UserControls\MyUserControl.ascx.cs" > 
    <SubType>ASPXCodeBehind</SubType> 
    <DependentUpon>MyUserControl.ascx</DependentUpon> 
</Compile> 
<Compile Include="$(MSBuildThisFileDirectory)MyPath\UserControls\MyUserControl.ascx.designer.cs" > 
    <DependentUpon>MyUserControl.ascx</DependentUpon> 
</Compile> 
+0

ソリューションエクスプローラ(正確には手元にある方法)ではなく、UIを使用してファイルをネストできる「ネストされたアイテム」という便利なVSエクステンションがあります。 #推奨 –

1

ここでの主な問題は、Visual Studioを使用してWebフォームのユーザー・コントローラを追加することができませんということですので、私がしようとするようですねそれを解決する。

私はこれがあなたがすでに探しているものと仮定していますが、これは新しいWebフォームユーザーコントロールを追加するときに行います。ソリューションエクスプローラで右クリックして[追加]をクリックし、[Webフォームユーザーコントロール]をクリックします。 enter image description here

ただし、これは利用できないものとします。だから私が見る次の場所は、ソリューションエクスプローラで右クリックすると "New Item"を選択することです。次に、新しい新しい項目の追加ダイアログで、Visual C#=> Web => Webフォームユーザーコントロールに移動します。 enter image description here

これらの2つのオプションがオプションでない場合は、Visual Studioに追加のWebコンポーネントがインストールされていることを確認します。使用しているVisual Studioのバージョンがわからないので、Visual Studio 2017と仮定します。Visual Studio 2017インストーラを開き、[変更]ボタンをクリックします。 ASP.NETとWeb開発を選択します。これらのコンポーネントは、テンプレートオプションを提供する必要があります。 VS17について話していなくても、以前のVisual Studioインストーラは類似しています。インストールを変更してWebコンポーネントを追加します。

enter image description here

最後に、あなたが他のプロジェクトで使用可能なオプションではなく、これを持っている場合は特に、私は、Visual Studioは、プロジェクトの種類に対応していないオプション/テンプレートが非表示になります知っていることが起こります。あなたのプロジェクトの.csprojファイルをお気に入りのテキストエディタ(明らかにNotePad ++)で開き、13行目に移動して、ProjectTypeGuidsのセミコロン区切りリストを見つけてください。私の例では、349c5851-65df-11da-9384-00065b846f21とfae04ec0-301f-11d3-bf4b-00c04f79efbcの2つがあります。最初はASP.NET MVC 5を表し、後者はC#を表します。最初のguidは、Visual StudioがこれをWebプロジェクトとみなす理由です。プロジェクトタイプのガイドのリストはhereです。 enter image description here

関連する問題