演练:将文档和程序集部署到不同的本地文件夹 (2003 System)

更新:2007 年 11 月

适用对象

本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。

项目类型

  • 文档级项目

Microsoft Office 版本

  • Microsoft Office 2003

有关更多信息,请参见按应用程序和项目类型提供的功能

本演练演示如何部署文档级自定义项,以使文档和程序集位于最终用户计算机上的不同文件夹中。此类型的部署称为本地/本地部署模型。

有关部署解决方案的选项的更多信息,请参见 部署模型 (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。

    ms404838.alert_note(zh-cn,VS.90).gif说明:

    此演练假定您部署的是 Word 解决方案。如果您要使用 Excel 解决方案来执行演练,请在所有代码示例中使用 Excel 项目名替换 Word 项目名。

  • 在开发计算机上具有管理员特权,以便您可以设置安全策略。

创建要部署的解决方案

第一步是创建要部署的基本 Visual Studio Tools for Office 解决方案。如果您已经有一个要部署的解决方案,则可以跳过本节并前进至“部署解决方案”。

创建要部署的解决方案

  1. 使用适用于 Office 2003 的项目模板创建一个名为 WordDeployment 的 Word 文档项目。

    在向导中,选择“创建新文档”。有关更多信息,请参见如何:创建 Visual Studio Tools for Office 项目

  2. 在“解决方案资源管理器”中,右击 ThisDocument 代码文件,再单击“查看代码”。

  3. 将下面的代码添加到 ThisDocument_Startup 事件处理程序。文档打开时此代码将显示一条消息,以便于验证解决方案是否已成功部署。

    MessageBox.Show("The deployment is successful")
    
    MessageBox.Show("The deployment is successful");
    

    有关 Startup 事件的更多信息,请参见 Visual Studio Tools for Office 项目事件

  4. 按 F5 生成并运行项目。验证消息是否显示。

部署解决方案

现在,您可以将文档和程序集部署到开发计算机上的不同文件夹中。

部署解决方案

  1. 在 Windows 系统驱动器 (%SystemDrive%) 的根目录下创建名为 TestDeployDocument 和 TestDeployAssembly 的文件夹。例如,如果您的系统驱动器为 C,则新文件夹将为 C:\TestDeployDocument 和 C:\TestDeployAssembly。

  2. 将文档从生成输出文件夹(通常为 项目文件夹\bin\debug 或 项目文件夹\bin\release)复制到 %SystemDrive%\TestDeployDocument 文件夹,并将程序集从生成输出文件夹复制到 %SystemDrive%\TestDeployAssembly 文件夹。

  3. 打开 %SystemDrive%\TestDeployDocument 文件夹中的文档。将显示一条错误信息,指出没有找到或未能加载自定义项程序集。

    当生成解决方案时,文档假定程序集和文档位于同一文件夹中。程序集的位置存储在嵌入文档中的应用程序清单中。如果您将文档和程序集部署到其他文件夹,则必须编辑嵌入的应用程序清单以指定新的程序集路径。下一节将说明此步骤。

  4. 退出 Word。

  5. 关闭 Visual Studio 中的解决方案。

    确保没有在 Word 或项目设计器的实例中打开文档。如果已经打开该文档,则在下一步中使用 ServerDocument 尝试访问该文档将失败。

编辑嵌入的应用程序清单

您可以使用 ServerDocument 类来编辑文档中嵌入的应用程序清单,以指向自定义项程序集的新位置。使用 ServerDocument 编辑嵌入的应用程序清单的代码必须位于与正在部署的文档关联的 Visual Studio Tools for Office 项目程序集以外。

编辑嵌入的应用程序清单

  1. 创建新的控制台应用程序项目。有关更多信息,请参见如何:创建解决方案和项目

  2. 将对 Microsoft.VisualStudio.Tools.Applications.Runtime.dll 程序集的引用添加到新项目。

  3. 将下面的 using 语句 (C#) 或 Imports 语句 (Visual Basic) 添加到 Program.cs 或 Module1.vb 代码文件的顶部。

    Imports Microsoft.VisualStudio.Tools.Applications.Runtime
    
    using Microsoft.VisualStudio.Tools.Applications.Runtime;
    
  4. 在 Main 方法中添加下面的代码以更新嵌入的应用程序清单。将 full document path 替换为文档在开发计算机上其部署位置中的完整路径 — 例如,C:\TestDeployDocument\WordDeployment.doc。将 full assembly path 替换为程序集在其部署文件夹中的完整路径 — 例如,C:\TestDeployAssembly\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();
        }
    }
    
  5. 按 F5 生成并运行项目。控制台应用程序将更新嵌入的应用程序清单中的程序集路径,然后关闭。

  6. 关闭控制台应用程序项目。

  7. 打开 %SystemDrive%\TestDeployDocument 文件夹中的文档。将显示一条错误信息,指出当前的 .NET 安全策略不允许该自定义项运行。这是由于您尚未对该程序集授予完全信任。

  8. 退出 Word。

    必须关闭所有 Word 实例,否则安全策略更改将不会生效。

设置安全策略

为了使解决方案能够运行,必须在 .NET Framework 2.0 安全策略中向程序集授予完全信任。本演练将使用代码访问安全策略工具 (Caspol.exe) 向程序集授予完全信任。有关使用 Caspol.exe 的更多信息,请参见 代码访问安全策略工具 (Caspol.exe)使用代码访问安全策略工具 (Caspol.exe) 配置安全策略

ms404838.alert_security(zh-cn,VS.90).gif安全说明:

为完成本演练而基于 URL 证据设置安全策略有几个基本步骤。如果您不确定位置是否安全,请不要使用这些步骤向实际解决方案中的程序集授予信任。决定实际解决方案的安全性时,还应根据更多的证据而不仅限于程序集的 URL 决定。有关更多信息,请参见 运行 Office 解决方案的安全要求 (2003 System)

向程序集授予完全信任

  1. 在命令提示符处,键入以下命令以创建一个向程序集授予完全信任的新代码组。

    %windir%\Microsoft.NET\Framework\v2.0.50727\caspol -u -ag All_Code -url "full assembly path" FullTrust -n "Test_Deployment"
    

    将 full assembly path 替换为程序集在开发计算机上的完整路径 -- 例如,C:\TestDeployAssembly\WordDeployment.dll。

    -n 参数将为新代码组指定名称。此参数不是必需的,但指定标签可以在本演练完成后更容易识别和移除新代码组。

  2. 出现提示时键入“yes”确认要执行此操作,然后按 Enter。

  3. 打开 %SystemDrive%\TestDeployDocument 文件夹中的文档,并确认消息出现。

后续步骤

也可以将文档和程序集部署到同一个本地文件夹中,或者可以将文档和程序集部署到网络文件夹。有关更多信息,请参见下列演练:

请参见

任务

演练:将文档和程序集部署到本地文件夹中 (2003 System)

演练:将文档部署到本地文件夹并将程序集部署到网络文件夹 (2003 System)

演练:将文档和程序集部署到网络文件夹中 (2003 System)

演练:使用部署清单部署文档级自定义项 (2003 System)

演练:使用 Windows Installer 文件部署文档级自定义项 (2003 System)

概念

部署 Office 解决方案 (2003 System)

部署文档级自定义项 (2003 System)

部署模型 (2003 System)