关于生产和开发环境的不同使用陈述

时间:2009-02-14 11:44:21

标签: c# deployment automation

我的一个项目中有一个烦人的问题,即生产环境使用的是Microsoft Office 2000,而我们在开发环境中只有Microsoft Office 2003。

我使用自动化对Word文档进行一些操作,以便在生产环境和开发环境中使用它,我必须将条件编译器语句放入我使用自动化的所有文件中的代码的using部分。

   #if DEVELOPEMENT 
   using Word = Microsoft.Office.Interop.Word;
   #else
   using Office;
   #endif

编辑:我知道显而易见的解决方案是让Microsoft Office 2000进入开发环境,但如果你想以合法的方式做到这一点并不容易。

我使用的是Visual Studio 2005,那么是否有更优雅的方法来避免这种条件编译器语句?

编辑:使用SDK中的TlbImp.exe工具的解决方案非常有效,您只需记住通过使用sn.exe工具生成密钥文件为生成的文件赋予强名称,否则Visual Studio将不会编译溶液:

"c:\...\SDK\v2.0\Bin\TlbImp.exe" "c:\...\Microsoft Office\Office10\MSWORD9.OLB" /keyfile:Office.snk /out:Office.dll

3 个答案:

答案 0 :(得分:5)

让某人找到OFfice 2000安装程序并将Office 2000置于开发阶段。如果您没有类似的环境,则无法确定您的代码是否适用于生产。

答案 1 :(得分:2)

我倾向于同意评论说最便宜的解决方案是安装相同版本的办公室,还有其他时候你需要解决这个问题:

您可以创建一个界面,提供进行办公室互动所需的功能。然后你可以创建两个独立的模块来实现相同的接口,一个取决于office 2000,另一个取决于2003.你应该把接口放在第三个模块中。

在代码中,您可以按名称实例化实现,而不是使用常规的“new”。这意味着您只需切换不同办公室版本的模块即可。您的主项目只能依赖于界面,并且根本不需要依赖办公室。

Office2000Module ----> Interfaces <------ Main application code
                         ^ 
                         |
Ofice 20003Module--------/

答案 2 :(得分:1)

找到安装了Office 2000和.NET的计算机。在其上运行此命令:

Tlbimp“c:... \ msword.olb”/out:Word.dll

其中...是Office安装目录。将Word.dll复制到您的开发计算机。在项目中添加对它的引用,确保将Copy Local设置为Yes(默认情况下)。您现在可以对任何版本的Office使用“使用Word”。必须将Word.dll文件部署到与.exe

相同的目录中的目标计算机上