演练:将文档部署到本地文件夹并将程序集部署到网络文件夹 (2003 System)
更新:2007 年 11 月
适用对象 |
---|
本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。 项目类型
Microsoft Office 版本
有关更多信息,请参见按应用程序和项目类型提供的功能。 |
本演练演示如何部署文档级自定义项,以使文档位于开发计算机上并使程序集位于网络计算机上的文件夹中。此类型的部署称为本地/网络部署模型。
有关部署解决方案的选项的更多信息,请参见 部署模型 (2003 System)。有关文档级自定义项的更多信息,请参见 文档级自定义项的体系结构。
本演练阐释以下任务:
编辑文档中嵌入的应用程序清单以指向程序集。
向位于网络文件夹中的 Visual Studio Tools for Office 解决方案程序集授予完全信任。
先决条件
您需要以下组件来完成本演练:
Visual Studio Tools for Office(Visual Studio 2008 专业版 和 Visual Studio Team System 的可选组件)。
Microsoft Office Word 2003 或 Microsoft Office Excel 2003。
说明: 此演练假定您部署的是 Word 解决方案。如果您要使用 Excel 解决方案来执行演练,请在所有代码示例中使用 Excel 项目名替换 Word 项目名。
对用于部署的网络计算机的访问权。
在开发计算机上具有管理员特权,以便您可以设置安全策略。
创建要部署的解决方案
第一步是创建要部署的基本 Visual Studio Tools for Office 解决方案。如果您已经有一个要部署的解决方案,则可以跳过本节并前进至“编辑嵌入的应用程序清单”。
创建要部署的解决方案
使用适用于 Office 2003 的项目模板创建一个名为 WordDeployment 的 Word 文档项目。
在向导中,选择“创建新文档”。有关更多信息,请参见如何:创建 Visual Studio Tools for Office 项目。
在“解决方案资源管理器”中,右击 ThisDocument 代码文件,再单击“查看代码”。
将下面的代码添加到 ThisDocument_Startup 事件处理程序。文档打开时此代码将显示一条消息,以便于验证解决方案是否已成功部署。
MessageBox.Show("The deployment is successful")
MessageBox.Show("The deployment is successful");
有关 Startup 事件的更多信息,请参见 Visual Studio Tools for Office 项目事件。
按 F5 生成并运行项目。验证消息是否显示。
退出 Word。
关闭 Visual Studio 中的解决方案。
确保没有在 Word 或项目设计器的实例中打开文档。如果已经打开该文档,则在后面的步骤中使用 ServerDocument 尝试访问该文档将失败。
编辑嵌入的应用程序清单
当生成解决方案时,文档假定程序集和文档位于同一文件夹中。程序集的位置存储在嵌入文档中的应用程序清单中。如果您将文档和程序集部署到其他文件夹,必须编辑嵌入的应用程序清单以指定新的程序集路径。
在以下步骤中,您将使用 ServerDocument 类编辑文档中嵌入的应用程序清单以指向自定义项程序集的新位置。使用 ServerDocument 编辑嵌入的应用程序清单的代码必须位于与正在部署的文档关联的 Visual Studio Tools for Office 项目程序集以外。
编辑嵌入的应用程序清单
创建新的控制台应用程序项目。有关更多信息,请参见如何:创建解决方案和项目。
将对 Microsoft.VisualStudio.Tools.Applications.Runtime.dll 程序集的引用添加到新项目。
将下面的 using 语句 (C#) 或 Imports 语句 (Visual Basic) 添加到 Program.cs 或 Module1.vb 代码文件的顶部。
Imports Microsoft.VisualStudio.Tools.Applications.Runtime
using Microsoft.VisualStudio.Tools.Applications.Runtime;
在 Main 方法中添加下面的代码以更新嵌入的应用程序清单。将 full document path 替换为文档在开发计算机上其生成位置中的完整路径 — 例如,项目文件夹\bin\debug\WordDeployment.doc。将 full assembly path 替换为程序集在其部署位置网络文件夹中的完整路径 — 例如,\\DeploymentServer\DeploymentFolder\WordDeployment.dll。
Dim sd As ServerDocument = Nothing Try sd = New ServerDocument("full document path") sd.AppManifest.Dependency.AssemblyPath = _ "full assembly path" sd.Save() Finally If Not sd Is Nothing Then sd.Close() End If End Try
ServerDocument sd = null; try { sd = new ServerDocument(@"full document path"); sd.AppManifest.Dependency.AssemblyPath = @"full assembly path"; sd.Save(); } finally { if (sd != null) { sd.Close(); } }
生成并运行此项目。控制台应用程序将更新嵌入的应用程序清单中的程序集路径,然后关闭。
关闭控制台应用程序项目。
部署解决方案
现在路径已正确无误,您可以将文档部署到开发计算机上的文件夹,并将程序集部署到网络计算机上的文件夹。
部署解决方案
在 Windows 系统驱动器 (%SystemDrive%) 的根目录下创建名为 TestDeployDocument 的文件夹。例如,如果您的系统驱动器为 C,则新文件夹将为 C:\TestDeployDocument。
在网络计算机上创建一个名为 DeploymentFolder 的文件夹,并向自己共享该文件夹。例如,如果网络计算机名为 DeploymentServer,则新的网络共享应为 \\DeploymentServer\DeploymentFolder。确保网络共享的名称与前面的步骤中编辑嵌入的应用程序清单时在 full assembly path 占位符中指定的名称相同。
将文档从生成输出文件夹(通常是 项目文件夹\bin\debug 或 项目文件夹\bin\release)复制到开发计算机上的 %SystemDrive%\TestDeployDocument 文件夹。
将程序集从生成输出文件夹复制到 \\DeploymentServer\DeploymentFolder 网络共享。
在开发计算机上打开 %SystemDrive%\TestDeployDocument 文件夹中的文档。将显示一条错误信息,指出当前的 .NET 安全策略不允许该自定义项运行。这是因为您尚未向网络文件夹中的程序集授予完全信任。
单击“确定”,然后关闭文档。
设置安全策略
为了使解决方案能够运行,必须在 .NET Framework 2.0 安全策略中向程序集授予完全信任。本演练将使用代码访问安全策略工具 (Caspol.exe) 向程序集授予完全信任。有关使用 Caspol.exe 的更多信息,请参见 代码访问安全策略工具 (Caspol.exe) 和 使用代码访问安全策略工具 (Caspol.exe) 配置安全策略。
安全说明: |
---|
为完成本演练而基于 URL 证据设置安全策略有几个基本步骤。如果您不确定位置是否安全,请不要使用这些步骤向实际解决方案中的程序集授予信任。决定实际解决方案的安全性时,还应根据更多的证据而不仅限于程序集的 URL 决定。有关更多信息,请参见 运行 Office 解决方案的安全要求 (2003 System)。 |
向程序集授予完全信任
在命令提示符处,键入以下命令以创建一个向程序集授予完全信任的新代码组。
%windir%\Microsoft.NET\Framework\v2.0.50727\caspol -m -ag LocalIntranet_Zone -url "full assembly path" FullTrust -n "Test_Deployment_Assembly"
将 full assembly path 替换为程序集在网络文件夹中的完整路径 — 例如,\\DeploymentServer\DeploymentFolder\WordDeployment.dll。
-n 参数将为新代码组指定名称。此参数不是必需的,但指定标签可以在本演练完成后更容易识别和移除新代码组。
出现提示时键入“yes”确认要执行此操作,然后按 Enter。
在开发计算机上打开 %SystemDrive%\TestDeployDocument 文件夹中的文档,并确认消息出现。
后续步骤
也可以将文档和程序集部署到本地文件夹,或者可以将文档和程序集都部署到网络文件夹。有关更多信息,请参见下列演练:
请参见
任务
演练:将文档和程序集部署到本地文件夹中 (2003 System)
演练:将文档和程序集部署到不同的本地文件夹 (2003 System)
演练:将文档和程序集部署到网络文件夹中 (2003 System)
演练:使用部署清单部署文档级自定义项 (2003 System)
演练:使用 Windows Installer 文件部署文档级自定义项 (2003 System)