我有一个DLL文件,在我的c#代码中在visual studio中创建。我需要从powershell运行我的代码,因此我使用Add-Type方法加载我的程序集。
我的Powershell代码:
Add-Type -Path C:\MyDirectoryWithDllFiles\MyAssembly.dll
[MyAssembly.MyClass]::MyStaticMethod()
当我把回归" Hello World"在MyStaticMethod中,一切正常。
当然,我的程序需要一些功能,并且需要配置文件。 我将我的powershell代码更新为:
[appdomain]::CurrentDomain.SetData("APP_CONFIG_FILE", "C:\MyDirectoryWithDllFiles\MyAssembly.dll.config")
Add-Type -AssemblyName System.Configuration
Add-Type -Path C:\MyDirectoryWithDllFiles\MyAssembly.dll
[MyAssembly.MyClass]::MyStaticMethod()
使用以下配置文件:(MyAssembly.dll.config)
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="myCustomSection" type="MyAssembly.MyCustomConfigurationSetting, MyAssembly" />
</configSections>
<!--this is the custom config section for myCustomSection-->
<myCustomSection>
<!-- some items -->
</myCustomSection>
</configuration>
在MyStaticMethod中,我从配置文件中获取项目,当我从visual studio运行代码时,它工作正常。当我运行powershell代码时,如上所述,我收到以下错误:
PS C:\ MyDirectoryWithDllFiles&gt; [MyAssembly.MyClass] :: MyStaticMethod() 错误:[System.Configuration.ConfigurationErrorsException:错误 发生了创建配置节处理程序 myCustomSection:无法加载文件或程序集 &#39; MyAssembly&#39; 或其中一个依赖项。系统 找不到指定的文件。 (C:\ Users \ MyUserName \ AppData \ Local \ Temp \ tmp2EB6.tmp第4行)---&gt; System.IO.FileNotFoundException:无法加载文件或程序集 &#39; MyAssembly程序&#39;或其中一个依赖项。系统找不到了 文件指定。在 System.Configuration.TypeUtil.GetTypeWithReflectionPermission(IInternalConfigHost host,String typeString,Boolean throwOnError)
它试图找到&#39; MyAssembly&#39;,就像我在配置文件中定义它一样。 MyAssembly.dll是我创建的一个DLL。但即使我在我的powershell中有这一行,它仍然无法工作: Add-Type -Path C:\ MyDirectoryWithDllFiles \ MyAssembly.dll
我有什么建议可以让它发挥作用吗?
答案 0 :(得分:0)
<强>解决方案:强>
感谢JayKul在https://stackoverflow.com/a/23569983/1408786
的回答我将此添加到配置部分,现在它可以正常工作: Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null
<section name="myCustomSection" type="MyAssembly.MyCustomConfigurationSetting, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />