.dll 是否保留添加到项目中的任何引用?
Do .dll 's retain any references added to your project?
问题
我创建了一个实现 System.Management.Automation 参考的 C# 项目(允许我在我的项目中编写 powershell 命令)。
我编译了该项目并将 dll 复制到我的 Rainmeter 应用程序的插件文件夹中,以便我可以将它与 Rainmeter 附带的其他 dll 一起使用。
这在我的机器(64 位)上完美运行;但是,我想在另一台服务器(也是 64 位)上加载相同的配置。两台机器都使用相同的 .NET Framework (4.5) 安装。
根据这个 source,我应该能够简单地复制包含 dll 的 Rainmeter 文件夹,它应该 运行 没有任何问题(我使用的是 Rainmeter 的便携式安装) .
除非我在另一台服务器上 运行ning Rainmeter 时删除我创建的 "SystemVersion.dll",否则我收到错误 "System.IO.FileNotFoundException"。
问题
由于问题显然是我添加的 dll,我假设没有将引用添加到 dll?
============================================= ============================
编辑
根据@Hackerman 的回答,问题是 dll 无法找到我的参考。 System.Management.Automation 的路径需要在机器上安装 powershell 3.0 版才能加载引用。
我的服务器是 运行ning powershell 2.0 版,但在安装 3.0 版后,dll 能够加载引用,Rainmeter 会按预期显示我的结果。
当您构建 class library
时,引用不会在您的最终 dll
上获得 embedded
。您得到的 System.IO.FileNotFoundException
是因为您的 dll 无法在目标服务器上加载 System.Management.Automation.dll
引用。在服务器上安装 PowerShell 3.0
应该可以解决问题。
问题
我创建了一个实现 System.Management.Automation 参考的 C# 项目(允许我在我的项目中编写 powershell 命令)。
我编译了该项目并将 dll 复制到我的 Rainmeter 应用程序的插件文件夹中,以便我可以将它与 Rainmeter 附带的其他 dll 一起使用。
这在我的机器(64 位)上完美运行;但是,我想在另一台服务器(也是 64 位)上加载相同的配置。两台机器都使用相同的 .NET Framework (4.5) 安装。
根据这个 source,我应该能够简单地复制包含 dll 的 Rainmeter 文件夹,它应该 运行 没有任何问题(我使用的是 Rainmeter 的便携式安装) .
除非我在另一台服务器上 运行ning Rainmeter 时删除我创建的 "SystemVersion.dll",否则我收到错误 "System.IO.FileNotFoundException"。
问题
由于问题显然是我添加的 dll,我假设没有将引用添加到 dll?
============================================= ============================
编辑
根据@Hackerman 的回答,问题是 dll 无法找到我的参考。 System.Management.Automation 的路径需要在机器上安装 powershell 3.0 版才能加载引用。
当您构建 class library
时,引用不会在您的最终 dll
上获得 embedded
。您得到的 System.IO.FileNotFoundException
是因为您的 dll 无法在目标服务器上加载 System.Management.Automation.dll
引用。在服务器上安装 PowerShell 3.0
应该可以解决问题。