這個問題可能已被多次詢問,也許我只是在這裏使用搜索功能和谷歌不好,但我還沒有找到這個問題的答案。引用的DLL沒有被複制到引用項目
我目前有兩個項目,項目X,項目Y和項目Z(僅持有映射)
項目X是FluentNhibernate項目持有我sessionfactories和這樣的事情。所以這也是映射加載和東西的地方(這很重要,我懷疑它可能是我遇到的問題的全部原因)
現在在Project X中,我引用了一個使用Microsoft的程序集。 SqlServer.Types.dll。
項目Y是一個服務,它使用項目X爲它的數據庫連接。
所有的問題都會在我的開發機器上完美地找到並運行,但是當部署到我們的服務器時,它們無法運行(運行時錯誤)。這個錯誤非常晦澀難懂,因爲它指向的是缺少的FluentNHibernate程序集。
Procmon.exe幸運地顯示代碼嘗試加載Microsoft.SqlServer.Types.dll,因爲服務器沒有安裝SQL Server(我的客戶端不是,但它有一個管理工作室,最有可能安裝此.DLL)。
到目前爲止好,複製DLL,它的工作(耶!)。
現在我想我會將程序集添加到項目X以確保將此引用複製到其他項目使用項目X.這沒有發生....所以我試圖設置'複製本地'設置爲true。
可悲的是這仍然沒有.dll文件複製到引用項目Y.
有沒有辦法做到這一點,或者這是Visual Studio的beeing巧妙,實現項目Y不需要這個.dll和從而拒絕複製它?
(由於項目ž需要實際的參考和項目X加載此組件@運行時沒有Z和X之間的「硬」參考)
可以在任何#2天才一些線索這一點,因爲老實說,我」我想知道爲什麼它會這樣做(理想情況下,它的行爲就像我想要的那樣)。
我還在談Microsoft.SqlServer.Types.dll肯定。但是,爲什麼在這種情況下將它與您的實際軟件分發不好呢?這裏有什麼最佳實踐的東西嗎? –
類型的DLL只是一個包裝的SQL Server自身也用於執行空間操作的DLL ...這些DLL是用C/C++編寫的,如果您只是複製類型的DLL,則不會被複制...你可能會導致也複製SQLServerSpatial.dll(這是本機DLL) – MichaC
嗯,我在源代碼中使用這些類型的第三個,我已經改變使用流暢的nhibernate與地理信息和SQL Server 2012方言。根據您提供的信息安裝CLR類型似乎可行。所以我會做更多的測試,如果那些成功,我會標記你的答案。這就是說我懷疑Visual Studio拒絕複製DLL,因爲它們是用C/C++編寫的。底層的問題仍然存在,我很想在這裏回答,但其他人因爲Microsoft.SqlServer.Types.dll而使用安裝程序,因此在這裏找到了方法。 –