4

私は dotnetnuke と asp.net をまったく初めて使用します。別の DNN サイトに簡単にインストールできるモジュール パッケージを作成する必要があります。問題は、SQL テーブルやその他のデータベース オブジェクトを手動で追加する必要があることです。パッケージのデプロイ時に自動的に追加されるようにしたいと考えています。私が言ったように、私はこれらすべてに不慣れであり、段階的な説明は非常に役立ちます.

ありがとう、

ジェレナ

4

2 に答える 2

4

OK私はこれを乗り越えました、そしてまだ苦労しているかもしれない人々と共有したいと思います。パッケージを作成したら、それを解凍していくつかのファイルを編集する必要があります。パッケージ内の.dnnファイルを見てください。そこで、Hamlinが指摘したように、SQLスクリプトを実行し、テーブル、ストアドプロシージャ、およびその他のデータベースオブジェクトを作成するSCRIPTS(ファイルではない)を追加する必要があります。これが私がdnnファイルに追加したコードの部分です。コンポーネントタグに追加されます。

  <components>
     <component type="Script">
         <scripts> 
            <basePath>DesktopModules\UserComments</basePath>
            <script type="Install">
            <name>05.02.05.SqlDataProvider</name> 
            <version>05.02.05</version>
            </script>

             <script type="uninstall"> 
            <name>uninstall.sqldataprovider</name> 
            <version>05.02.05</version>     
            </script>
         </scripts>
     </component>
        <component type="Module"> 

そこで、パス、ファイルタイプ、ファイル名、およびバージョンを入力する必要があります。次に、マニフェストで指定したデータプロバイダーファイルを作成する必要があります。{databaseOwner}と{objectQualifier}を使用して、新しいデータベースオブジェクトがインストール先のサーバーに準拠していることを確認しました。これらは大文字と小文字が区別されるため、注意してください。そうしないと、エラーが発生します。私のデータプロバイダーファイルは次のようになります。

05.02.05.sqldataprovider

ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE {databaseOwner}{objectQualifier}usercomments(
    [moduleid] [int] NULL,
    [comment] [text] NULL,
    [date] [datetime] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

create procedure {databaseOwner}sp_viewcomments 
@moduleid int
AS
BEGIN
SET NOCOUNT ON 
    SELECT moduleid, comment, date from {objectQualifier}usercomments where   moduleid=@moduleid
end
go

create PROCEDURE {databaseOwner}sp_usercommentsinsert 
@moduleid int,
@comment text,
@commentdate datetime
AS
BEGIN
SET NOCOUNT ON;
    insert into {databaseOwner}{objectQualifier}usercomments (moduleid, comment, date) values (@moduleid, @comment, @commentdate)  
END
go

create PROCEDURE {databasOwner}sp_countcomments
@moduleid int
As
begin
    SELECT count(*) from {databaseOwner}{objectQualifier}usercomments where moduleid=@moduleid
end
go

アンインストール.sqldataprovider

DROP TABLE      {databaseOwner}{objectQualifier}usercomments 
GO

drop procedure {databaseOwner}sp_usercommentsinsert  
GO

drop procedure {databaseOwner}sp_viewcomments 
GO

drop procedure {databaseOwner}sp_countcomments 
go

sqlconnectionsが新しいサイトに適切であることを確認し、必要に応じて、接続を含むファイルに変更を加えます(私の場合、vbascx.vbおよびascxfleにあります)。このコードを使用して、web.configファイルから情報を取得し、任意のサイトに適切な接続を確立しました。

vbファイル:

 Dim cn As New SqlConnection(ConfigurationManager.ConnectionStrings("sitesqlserver").ConnectionString) 

ascxファイル:

ConnectionString="<%$ ConnectionStrings:SiteSqlServer %>"  

次に、新しいdataproviderファイルを含むすべてのファイルをzipファイルにパッケージ化すると、準備が整います。

于 2011-05-05T21:14:47.310 に答える
4

これは SqlDataProvider ファイルによって処理されます。

VS2010 (または VS2008) で DotNetNuke Compiled Module プロジェクトを作成すると、最終的に 3 つのファイルが作成され、そのうちの 2 つがここで問題になることに注意してください (私が思うに)

  • 01.00.00.SqlDataProvider はモジュールのインストール時に実行されます
  • Uninstall.SqlDataProvider は、アンインストール時に実行されます

DNN マニフェスト ファイルには、これらの SqqDataProvider ファイルを指すエントリがあることに注意してください。

    <file>
      <name>01.00.00.SqlDataProvider</name>
    </file>
    <file>
      <name>Uninstall.SqlDataProvider</name>
    </file>

また、マニフェスト ファイルでは、バージョン番号がインストーラー SQL ファイルのプレフィックスに対応していることにも注意してください。

<version>01.00.00</version>

最後に、DNN モジュールを .zip ファイルにパッケージ化します。正確な構造はわかりませんが、DNNCreative と以下で参照されている本には多くの情報があります。

展開可能な .zip ファイルを取得したら、SnowCovered から購入する可能性のある他のモジュールと同じようにインストールします。

私の提案は、次のことを行うことです

  • カスタム モジュール開発に関する最近の DNNCreative トレーニング ビデオをご覧ください。彼らはこのプロセスを非常に詳細に説明しています。
  • Mitchel Seller の本を読んでください: http://www.amazon.com/Professional-DotNetNuke-Programming-Mitchel-Sellers/dp/0470171162 -- モジュールの複数のバージョンをサポートするための SQL スクリプト/マニフェストの楽しい調整について説明しています。

両方のリソースを使用しましたが、非常に便利でした

于 2011-04-30T15:28:27.717 に答える