[英]Deploying .NET COM dlls, issues when used on another computer
我是C#編程的新手,希望您在某些方面有所幫助。
快速回顧一下我首先要做的事情。
我必須創建:-一個生成多個.h5文件(HDF5格式)和一個xml文件的DLL-一個WPF查看器,用於將這些HDF5文件中寫入的圖形。
問題主要是它們將被用在名為PanoramaE²的軟件中,該軟件基本上以非常嚴格的方式來管理DLL。 例如,它不允許使用.NET Framework 4(這使我使用該框架的3.5版本)。
有關Panorama的更多信息: http : //uk.codra.net/panorama/panorama-e2-information-system
我使用的是HDF5DotNet.dll,它是在x64中為.NET 3.5編譯的,而DynamicDataDisplay是為WPF應用程序編寫的。
我的所有DLL將被另一台安裝了Panorama且未安裝Visual Studio的計算機使用(只有3.5 .NET框架和一些必需的工具)。
有什么問題 ?
好吧,首先,我的WPF應用程序並不是一個真正的應用程序,Panorama似乎不支持WPF,僅支持Windows窗體,並且僅支持DLL。 這意味着我創建了一個WPF用戶控件,並將其嵌入Windows窗體DLL中。
我基本上有2個DLL,一個是WPF控件,一個在winform中使用此控件。 這是我必須在Panorama中集成的最后一個。 在我正在使用其進行編碼的計算機上,Panorama可以正確識別DLL,並且沒有問題。
但是,當我嘗試將這些DLL提供給我的同事時,如果他的同事沒有安裝Visual Studio, 則它的全景圖將不起作用 。 經過一些測試,我注意到只有在同一台計算機上編譯了項目(DLL)后,它才起作用。
另一個DLL(創建文件的DLL)也遇到了同樣的問題。 如我所說,它使用HDF5DotNet.dll,但似乎無法正確創建它。 我想這是同樣的問題,無法識別DLL。
我試過了
我認為DLL可能沒有正確導出。 也許沒有給出引用的DLL或程序集,這是在同一台計算機上進行編譯時的結果。 它們是COM DLL,因為它們已在Panorama中使用,我無法正確導出它們。
我嘗試創建安裝項目,以便將它們與依賴項一起安裝,但是我找不到辦法。 僅安裝DLL。 我嘗試使用DependancyWalker查看DLL,但有些地方缺少依賴關系。 即使我嘗試手動添加它們,也沒有任何改變。
我也知道regsvr32不適用於.NET DLL,因為沒有入口點。 這就是我考慮GAC的原因,但是我無法設法注冊它們(使用強名和所有內容),因為我無法直接生成它們。
因此,是的,很長的帖子,很抱歉,我試圖解釋我的思路以及我實際上試圖做的事情,但是我無法找到一種方法將項目交給我的同事,以便他可以在他的計算機上使用它們。
嗨,請在命令提示符下嘗試以下命令,而不是regsvr32嘗試以下命令:
“ RegAsm.exe acxMaterialClassificationMerge.dll /codebase
”,其中acxMaterialClassificationMerge.dll是您的dll。 您應該在要使用dll的每台PC上執行此操作。 RegAsm位於C:\\ Windows \\ Microsoft.NET \\ Framework \\ v2.0.50727
“自注冊”(無論是RegSvr32,RegAsm還是其他)不是Windows Installer最佳實踐。 這會將進程依賴項注入到安裝程序不知道的安裝關鍵路徑中,該路徑可能會失敗,無法回滾或卸載。
更好的方法是使用RegAsm / regfile收集ComVisible程序集的COM元數據,然后將這些注冊表值創作到MSI的Registry表中。 這樣,Windows Installer只需復制DLL並應用注冊表值即可注冊您的組件。 它破裂的可能性小得多,可以干凈地卸載和修復。
確切的方式取決於您用來編寫MSI的工具。 在WiX中,您將使用Heat來收集此信息。 在InstallShield中,您可以將.NET ComVisible屬性設置為True。
最終結果是相同的。
1:在計算機上安裝第一個dotnet Framework版本2或更高版本
2:在命令提示符下:“ RegAsm.exe acxMaterialClassificationMerge.dll / codebase”,其中acxMaterialClassificationMerge.dll是您的dll。 您應該在要使用dll的每台PC上執行此操作。 RegAsm位於C:\\ Windows \\ Microsoft.NET \\ Framework \\ v2.0.50727。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.