2013-10-07 57 views
2

我在Visual Studio 2012中包含多個項目的解決方案。我試圖將項目添加到另一個項目作爲參考,以便能夠將它們一起使用,但我無法弄清楚爲什麼添加此項目引用會導致在部署/運行時丟失DLL(下面的FusionLog)。我用之前調用此方法沒有這個問題,所以我必須缺少的東西在這裏...將項目添加爲參考結果無法加載文件或程序集或其某個依賴關係

解決方案配置:

主要項目:Bootstrapper
子項目:BootstrapperCustom
項目我想補充作爲參考:部署時LicenseCheckBootstrapperCustom
缺少DLL:LicenseCheck.dll

[Bootstrapper] 
--Installer: Configuration: N/A, Platform: N/A 
--Build: Configuration: Active (Debug), Platform: Active (x86) 
--Ref: 
----[BootstrapperCustom] 

[BootstrapperCustom] 
--Application: Configuration: N/A, Platform: N/A, Target framework: .NET 4.5, Output type: Class library 
--Build: Configuration: Active (Debug), Platform: Active (Any CPU), Platform target: Any CPU 
--Ref: 
----[BootstrapperCore] (Copy Local: True) 
----[LicenseCheck] (Copy Local: True) 
----[Microsoft.Deployment.WindowsInstaller] (Copy Local: True) 
----[Microsoft.Practices.Prism] (Copy Local: True) 

[LicenseCheck] 
--Application: Configuration: N/A, Platform: N/A, Target framework: .NET 4.5, Output type: Class library 
--Build: Configuration: Active (Debug), Platform: Active (x86), Platform target: Any CPU 
--Ref: 
----[Microsoft.Deployment.WindowsInstaller] (Copy Local: True) 
----[Parse] (Copy Local: True) 

錯誤消息:

Run Bootstrapper.exe = `Could not load file or assembly 'LicenseCheck, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.` 

FusionLog(確認LicenseCheck.dll是失蹤):

[%TEMP%\{x}\.ba1] 
--BootstrapperCore.dll 
--BootstrapperCustom.dll 
--Microsoft.Practices.Prism.dll 

=== Pre-bind state information === 
LOG: User = NOTTHOR\dirt 
LOG: DisplayName = LicenseCheck, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 
(Fully-specified) 
LOG: Appbase = file:///C:/Users/dirt/AppData/Local/Temp/{94ef2c32-a419-410e-a8a0-df404f022ff7}/.ba1/ 
LOG: Initial PrivatePath = NULL 
Calling assembly : BootstrapperCustom, Version=1.0.5028.16514, Culture=neutral, PublicKeyToken=null. 
=== 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: C:\Users\dirt\AppData\Local\Temp\{94ef2c32-a419-410e-a8a0-df404f022ff7}\.ba1\BootstrapperCore.config 
LOG: Using host configuration file: C:\Users\dirt\AppData\Local\Temp\{94ef2c32-a419-410e-a8a0-df404f022ff7}\.ba1\BootstrapperCore.config 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). 
LOG: Attempting download of new URL file:///C:/Users/dirt/AppData/Local/Temp/{94ef2c32-a419-410e-a8a0-df404f022ff7}/.ba1/LicenseCheck.DLL. 
LOG: Attempting download of new URL file:///C:/Users/dirt/AppData/Local/Temp/{94ef2c32-a419-410e-a8a0-df404f022ff7}/.ba1/LicenseCheck/LicenseCheck.DLL. 
LOG: Attempting download of new URL file:///C:/Users/dirt/AppData/Local/Temp/{94ef2c32-a419-410e-a8a0-df404f022ff7}/.ba1/LicenseCheck.EXE. 
LOG: Attempting download of new URL file:///C:/Users/dirt/AppData/Local/Temp/{94ef2c32-a419-410e-a8a0-df404f022ff7}/.ba1/LicenseCheck/LicenseCheck.EXE. 

注:當我重建BootstrapperCustom項目,我做看到 LicenseCheck.dll在Bootstrapper\bin\Debug中生成。

回答

0

原來這是一些在主項目(WiX的引導程序)的配置。我沒有將我的Payload列表中的LicenseCheck.dll包含在BootstrapperApplication中。

加入到引導程序\ Bundle.wxs:

<Payload SourceFile="$(var.BootstrapperCustom.TargetDir)LicenseCheck.dll" />

1

你嘗試看看,如果你引用該項目採用的LicenseCheck dll文件,但實際上並沒有參考呢? (例如:您引用的項目可能會在初始化期間動態加載dll)。

如果是這樣的話,你可以添加一個生成步驟的DLL複製到輸出文件夾(見Copying files into the application folder at compile time例如)

0

在解決方案資源管理器中,右鍵單擊並重建項目。 看看dll是否在Windows資源管理器中重新生成。 爲了讓它工作,只需將該項目的dll複製到主項目bin文件夾即可。它應該工作。 這是一個最壞的情況,只是起牀和運行

+0

該問題在備註中明確指出該文件正在重建時生成。 – Maverik

0

我知道這不是你的答案,但我來到這裏有同樣的錯誤信息,尋找靈感尋找什麼。事實證明,我引用的項目是比我的主要項目更新的目標框架。

相關問題