DLL を SafeControls として展開するにはどうすればよいですか?(手動による解決策は使用しないでください)

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/1490

質問

私はユーザーコントロールプロジェクト(UI)を持っており、それらでAJAX Extension Toolkitを使用しています。の dll AJAX Extension Toolkit の がプロジェクト内で参照されています。プロジェクトは正常にコンパイルされています。

同じソリューション内の別のプロジェクト、つまり WSPBuilder プロジェクト (デプロイ) です。UI プロジェクトをビルドすると、すべてのコントロールが Deploy プロジェクト ディレクトリにコピーされます。 12\TEMPLATE\CONTROLTEMPLATES そして dll の UI プロジェクトもコピーされました GAC フォルダ。(コピーにはビルド後のイベントを使用しています)

次に、WSPBuilder Build を使用して Deploy プロジェクトをビルドし、デプロイします。エラーメッセージが表示されます:

An error occurred during the processing of . Unknown server tag 'asp:ScriptManager'.

ajax 拡張機能を追加して安全なコントロールとしてマークするには、web.config を手動で変更する必要があるとは言わないでください。そんなことはしません。

もっと良い解決策はありますか?

追伸:WSPBuilder、STSDEV、VSeWSS を使用しています。

編集

クリスのおかげです。問題は次のとおりです。

この場合、あなたが欠けているのはWeb.configの他の要素であるAjax宣言だと思います。特に、 web.configで次のように.Netします ScriptManagerを見つける方法を知っている .class:

<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

しかし、この問題は私にとって少し奇妙です。設定しなければならなかった enableSessionStatetruepages 下のタグ system.web そして、次のコメントを外します。

<add name=”Session” type=”System.Web.SessionState.SessionStateModule” />

GAC に AjaxExtension.dll を入れれば、この問題は解決できると思いました。私は web.config を変更する機能を書くことを避けていました。これをmanifest.xmlでも行うことができますか?

提案してください!

役に立ちましたか?

解決

表示されているエラーは、SafeControls エントリに関連していないようです。その場合は、「選択した Web パーツを追加できません。」というメッセージが表示されます。このページの Web パーツまたは Web フォーム コントロールは表示またはインポートできません。このタイプは安全なものとして登録されていません。」

この場合、不足しているのは web.config 内の他の要素、つまり AJAX 宣言だと思います。 そのことなど, .Net が ScriptManager クラスを見つける方法を認識できるように、web.config に次のものが必要です。

<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

いくつかのオプションがあります。

  • 人気の機能を使用する SharePoint 機能 Codeplex プロジェクト これにより web.config が変更されます
  • SPWebConfigModification を使用して web.config を変更する独自のコードを作成します。

必要な web.config 変更の詳細は次のとおりです。 Mike Ammerlaan のブログで詳しく説明されています.

どちらの方法をとる場合でも、使用している AJAX のバージョンを、使用しているガイダンス/サンプルと照らし合わせて確認してください。

他のヒント

WSPBuilder サイトからのコメント。

よくやった!AJAX と AJAX Control Toolkit を展開した場合、サードパーティ DLL の追加はうまく機能しました。すべての web.config 変更を行う機能を作成し、GAC eference フォルダーを使用して Control Toolkit DLL を含めました。ファーム内に複数のサーバーがある場合でもうまく機能しました。それは命の恩人でした!

したがって、DLL を WSPBuilder プロジェクトに含めて組み込み、web.config を変更する機能を作成します。見る この郵便受け 機能を使用して web.config を変更する方法については、

まず、デプロイするアセンブリを VS プロジェクトに追加する必要があります。たとえば、「libs」フォルダーを作成して、チーム サイトに必要なすべての外部アセンブリを保存できます。

次に、チーム サイト定義のmanifest.xml ファイルを編集する必要があります。このファイルは、プロジェクト内の「pkg」フォルダー内にあります。pkg フォルダーは、ソリューションを少なくとも 1 回デプロイした場合にのみ使用できることに注意してください。

OK、新しいものを追加する必要があります <Assembly> の子要素 <Assemblies> チーム定義ソリューションのmanifest.xmlファイル内の要素。「DeploymentTarget」属性を使用すると、アセンブリを GAC にデプロイするか、Web アプリケーションの bin フォルダーにデプロイするかを定義できます。

次の例は、 <Assemblies> 要素は、「TeamSiteDefinition1.dll」を GAC に追加し、「TestSolution.dll」を bin フォルダーに追加する場合のようになります。アセンブリに安全なコントロール エントリが必要な場合は、これも追加できます。

<Assemblies>
    <Assembly Location="TeamSiteDefinition1.dll" DeploymentTarget="GlobalAssemblyCache" />
    <Assembly Location="TestSolution.dll" DeploymentTarget="WebApplication">
       <SafeControls>
          <SafeControl ..... />
       </SafeControls>
    </Assembly>
</Assemblies>
ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top