我编写了一个使用SharePoint dll文件的快速控制台应用程序。如果我尝试在没有所述dll文件的计算机上运行它,应用程序会在打开时立即崩溃。
我绝对是一个新手,但是如果有一种方法,应用程序可以告诉用户他们在错误的机器上使用它,然后它很难崩溃。除了编写第二个应用程序来扫描依赖项之外,有没有其他方法可以执行此操作,以便在相关应用程序之前运行?如果我将需要依赖项的代码放在一个单独的类中,直到应用程序检查它是在正确的计算机上才会实例化,应用程序在打开时是否仍会立即失败?当然有人已经找到了针对这种情况的解决方法。
答案 0 :(得分:2)
不幸的是,你必须编写一个启动器应用程序 - 如果你考虑一下,所需的DLL需要在那里为主应用程序启动。如果您在主应用程序中嵌入扫描,则由于缺少DLL而无法启动扫描。
您可以使用插件架构扫描所需的DLL并动态加载它们(MEF会想到)。
答案 1 :(得分:1)
如何将该dll的负载包装到:
try {
Assembly.Load(..);
}
catch(TypeLoadException ex) {
//Let the user know which type from what dll was not loaded.
}
您必须在运行时加载该dll才能实际执行此操作。
答案 2 :(得分:0)
可以将程序集复制到sharepoint的输出目录。所以参考是在本地进行的。
答案 3 :(得分:0)
如果您的应用程序直接引用SharePoint dll或程序集,则无法通知用户,因为如果任何静态链接的所需程序集不可用,.NET CLR将不会执行您的代码。
您可以使用某种动态加载SharePoint程序集和类型,以便在启动时应用程序不需要执行该程序集,或者为应用程序创建一个启动程序来执行检查,如果一切正常启动您的应用程序,否则通知用户。