将项目添加为引用会导致无法加载文件或程序集或其依赖项之一
本文关键字:程序集 文件 依赖 加载 添加 项目 引用 | 更新日期: 2023-09-27 18:34:10
我在Visual Studio 2012中有一个包含多个项目的解决方案。我正在尝试将一个项目作为参考添加到另一个项目中,以便能够将它们一起使用,但我无法弄清楚为什么添加此项目引用会导致在部署/运行时丢失 DLL(FusionLog
下文)。我以前使用过这种方法而没有这个问题,所以我一定在这里错过了一些东西......
解决方案配置:
主项目: Bootstrapper
子项目:BootstrapperCustom
我正在尝试添加的项目作为参考:LicenseCheck
BootstrapperCustom
部署时缺少 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 (已确认的许可证检查.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
中生成。
您是否尝试查看您引用的项目是否使用了 LicenseCheck dll 文件,但实际上并没有引用它?(例如:引用的项目可能在初始化期间动态加载 dll)。
如果是这种情况,您可以添加一个构建步骤以将 dll 复制到输出文件夹(例如,请参阅在编译时将文件复制到应用程序文件夹)
这是主项目(WiX 引导程序)配置中的内容。我未能将许可证检查.dll包含在引导程序应用程序的有效负载列表中。
添加到 Bootstrapper''Bundle.wxs:
<Payload SourceFile="$(var.BootstrapperCustom.TargetDir)LicenseCheck.dll" />
在解决方案资源管理器中,右键单击并重新生成该项目。查看 dll 是否在 Windows 资源管理器中重新生成。要使其正常工作,只需将 dll 从该项目复制到主项目 bin 文件夹即可。 它应该有效。这是启动并运行的最坏情况<</p>
我知道这不是你的答案,但我带着同样的错误消息来到这里,寻找寻找灵感。事实证明,我引用的项目是比我的主项目更新的目标框架。