在Visual Studio中,当向项目添加一个引用时,属性窗口有一个选项Embed Inteop Types,我们应该将其设置为True或False?有什么不同?
由于我们有很多项目,其中一些项目已经设置参考False,其他项目设置为True,它完全搞砸了.并且bulid服务器也有相同的警告:
因此,我们打算改变所有的Embed Inteop Types到False,我们会得到什么风险?
我们有一个大型的C#(.net 2.0)应用程序,它使用我们自己的C++ COM组件和第三方指纹扫描程序库,也可以通过COM访问.我们遇到了一个问题,在生产过程中,指纹库中的某些事件不会被C#应用程序触发,尽管来自我们自己的C++ COM组件的事件被触发并且收到的很好.
使用MSINFO32将工作系统上加载的模块与发生故障的系统上的模块进行比较,我们确定这是由STDOLE.DLL不在GAC中引起的,因此未加载到故障进程中.
将此文件拖到GAC中会导致事件从指纹COM库恢复正常.
那么stdole.dll做什么?它的大小是16k所以它不能太多......它是否与STDOLE32这样的另一个库有某种联系?它的缺席怎么会导致这种奇怪的行为?
我们如何分发stdole.dll?这是一个XCOPY部署应用程序,我们不使用GAC.我们应该将它打包为资源并使用System.EnterpriseServices.Internal.Publish.GacInstall来确保它在GAC中吗?
我刚开始在ClickOnce应用程序中遇到以下错误。在安装并运行相同的应用程序时,在看似成功的安装之后,我收到一条错误消息:
应用程序验证未成功
我可以看到的错误详细信息是:
强名签名对此程序集stdole.dll无效。
当我单击详细信息时,我得到
错误详细信息在此操作中检测到以下错误。* [2016年4月13日11:33:22 AM] System.Deployment.Application.InvalidDeploymentException(SignatureValidation)-强名称签名对此程序集stdole.dll无效。-来源:System.Deployment-堆栈跟踪:位于System.Deployment.Application.ComponentVerifier.VerifyComponents(),位于System.Deployment.Application.ComponentVerifier.VerifyStrongNameAssembly(String filePath,AssemblyManifest assemblyManifest),位于System.Deployment.Application.DownloadManager.DownloadDependencies(在System.Deployment的SubscriptionState subState,AssemblyManifest deployManifest,AssemblyManifest appManifest,Uri sourceUriBase,String targetDirectory,String组,IDownloadNotification通知,DownloadOptions选项)。