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