2

私はSharePoint2010の初心者です。プロジェクトを右クリックし、ローカルに展開する場合は[展開]を選択します。プロジェクトのサイトURLは私のローカルマシンに設定されています。QAサーバーに展開する場合は、[展開]を選択し、[デバッグ/リリース]フォルダーに移動し、.wspファイルを取得し、QAでサーバーの全体管理にログオンし、ソリューションを撤回してAdd-SPsolution <path to wsp file>から、PowerShellを使用して、サーバーの全体管理に戻ります。 、そのパッケージのソリューションの展開をクリックします。正常に動作します。

ローカルマシンのweb.configには、カスタム接続文字列とappsettingsがあります。パッケージをQAサーバーにデプロイするとき、QAに固有の接続文字列とアプリ設定を手動で変更しています。このプロセスを自動化したい。web.configをパッケージの一部にし、独自のカスタム接続文字列(1つはローカル用、もう1つはQA用、および本番用)とアプリ設定を使用したいと思います。どうすればいいのですか?目標は新しいマシン上にあり、wspをデプロイできるはずであり、appsettings+web.configは手動で何も変更せずにすべて正しいはずです。どうすればこれを達成できますか?

4

1 に答える 1

1

web.configの変更は、パッケージファイル/CAMLだけでは実行できないと確信しています。

ただし、実行できるのは、 SPWebApplication.WebConfigModificationsを介してweb.configを変更するWebApplicationFeatureRecieverをデプロイすることです。

これが私のプロジェクトのコードスニペットです。詳細については、Code Project KBを参照してください(この最初のビットは、いくつかのメモが付いた便利な関数です)。

// For WebConfigModifications access,
// see http://www.codeproject.com/KB/sharepoint/SPWebConfigModTool.aspx
// Hints:
// app.WebConfigModifications.Add(new SPWebConfigModification
//    {
//        Type =     [add/update child node?]
//        Path =     [XPath of parent node]
//        Name =     [XPath to identify child node UNIQUELY]
//        Owner =    [Use GUID to identify as ours]
//        Sequence = [Sequence number, likely 0 for only one]
//        Value =    [XML node to add/update]
//    });
void ModfiyWebConfig (SPWebApplication app, string path, string name, XElement node)
{
    app.WebConfigModifications.Add(new SPWebConfigModification
    {
        Type = SPWebConfigModificationType.EnsureChildNode,
        Path = path,
        Name = name,
        Owner = OwnerId,
        Sequence = 0,
        Value = node.ToString(),
    });
}

Get / init SPWebApplication

var app = properties.Feature.Parent as SPWebApplication;

キュー/セットアップの変更

ModfiyWebConfig(app,
            "configuration/system.webServer/modules",
            "add[@name='ASPxHttpHandlerModule']",
            new XElement("add",
                new XAttribute("name", "ASPxHttpHandlerModule"),
                new XAttribute("type", aspxHandlerModule)));

変更を適用する

app.WebService.ApplyWebConfigModifications();
app.Update();
于 2012-11-13T19:14:20.233 に答える