我有一個簡單的c#應用程序,我想從C:\..\..myassembly.dll
引用程序集而不將其複製到bin文件夾。從路徑加載程序集而不將其複製到bin文件夾
我有一種方法來改變如何被引用/加載程序集?
編輯:大會是不是在GAC
我有一個簡單的c#應用程序,我想從C:\..\..myassembly.dll
引用程序集而不將其複製到bin文件夾。從路徑加載程序集而不將其複製到bin文件夾
我有一種方法來改變如何被引用/加載程序集?
編輯:大會是不是在GAC
其實它在運行時可以通過在你的配置中使用<codeBase>
標籤:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MyAssembly2" culture="neutral" publicKeyToken="307041694a995978"/>
<codeBase version="1.0.1524.23149" href="FILE://C:/Myassemblies/MyAssembly2.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
您可以參考MSDN獲得更具體的信息。此解決方案的缺點是您必須手動指定程序集版本。
您能否給我提供一個示例 –
@devhedgehog其實我已經提供了一個示例。我可以詳細說明,但請具體說明您不清楚的內容。 – Kamo
我做了與上面顯示的一樣,除了我有多個dependentAssembly條目。恰好4個。兩個正在工作,但那些publicKeyToken = null的不是。有任何想法嗎? –
解決您的問題的多種解決方案。
要避免通過選擇.dll屬性將庫複製到輸出文件夾集Copy Local
爲false。
選項1:
包括下列在配置文件部分,讓運行時允許從您指定的位置加載。
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MyAssembly" publicKeyToken="2d65620afb84f19d" />
<codeBase version="1.0.0.0" href="C:\..\..myassembly.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
選項2:
衆所周知選項,使用反射來加載程序集。
Assembly.Load(@"C:\..\..myassembly.dll")
希望這有助於!
你可以單獨使用'Assembly'類'LoadFrom'重載加載程序集。 –
單擊解決方案中的參考並將'Copy Local'設置爲false – Rob
如果我將本地複製設置爲false,則我的應用程序將不會啓動:) –