我是SharePoint 2010的新手。我右键单击该项目,如果要在本地部署,请选择“部署”。项目上的站点URL设置为我的本地计算机。如果我想部署到QA服务器,我选择Deploy,导航到Debug / Release文件夹,获取.wsp文件,登录QA上的管理中心,撤消解决方案,然后通过powershell执行Add-SPsolution <path to wsp file>
,返回中央管理员,单击该软件包的部署解决方案。工作良好。
我本地计算机上的web.config有一个自定义连接字符串和appsettings。当我在QA服务器上部署包时,我手动更改特定于QA的连接字符串和appsettings。我想自动化这个过程。我希望web.config成为包的一部分,它有自己的自定义连接字符串(一个用于本地,一个用于QA,用于生产)和appsettings。我该怎么做?目标是在新机器上,我应该能够部署wsp和appsettings + web.config应该都是正确的,而无需手动修改任何内容。我该如何做到这一点?
答案 0 :(得分:1)
我非常确定web.config修改不能只用包文件/ CAML 完成。
但是,可以完成的是部署WebApplication Feature Reciever,它通过SPWebApplication.WebConfigModifications修改web.config。
以下是我项目中的代码片段,有关详细信息,请参阅the the 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(),
});
}
获取/初始化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();