C# 使用导入模块时,如何指定程序集的路径

C# 使用导入模块时,如何指定程序集的路径,c#,powershell,sharepoint,.net-assembly,import-module,C#,Powershell,Sharepoint,.net Assembly,Import Module,我有一个Solution.dll,它有打开SharePoint Online Management Shell并执行上述操作的方法。当我这么做的时候,我有时会意外地发现 Could not load type 'Microsoft.Online.SharePoint.TenantManagement.SPOConditionalAccessPolicyType' from assembly 'Microsoft.Online.SharePoint.Client.Tenant, Version=1

我有一个
Solution.dll
,它有打开SharePoint Online Management Shell并执行上述操作的方法。当我这么做的时候,我有时会意外地发现

Could not load type 'Microsoft.Online.SharePoint.TenantManagement.SPOConditionalAccessPolicyType' from assembly 'Microsoft.Online.SharePoint.Client.Tenant, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'.
问题是我的
Solution.dll
所在的目录中有一个旧版本的
Microsoft.Online.SharePoint.Client.Tenant.dll
。而且它没有
spocationalAccessPolicyType
类。而“C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.Online.SharePoint.Client.Tenant.dll”具有类

因此,当我想访问联机管理Shell时,我希望解决方案加载“联机管理Shell”文件夹中的租户dll,而不是加载项目文件夹中的dll

试着给出下面的

InitialSessionState iss = InitialSessionState.CreateDefault();
iss.ImportPSModule(new string[2] { "C:\\Program Files\\SharePoint Online Management Shell\\Microsoft.Online.SharePoint.PowerShell\\Microsoft.Online.SharePoint.PowerShell.dll",
                                   "C:\\Program Files\\SharePoint Online Management Shell\\Microsoft.Online.SharePoint.PowerShell\\Microsoft.Online.SharePoint.Client.Tenant.dll" });
但是没有运气。仍然出现“无法加载类型…”错误


删除旧版本的dll可能不是我的解决方案,因为我需要它有不同的用途。如何指定无论是否存在程序集都应始终加载的所需dll路径。

您可以通过使用模块清单来实现这一点:

New-ModuleManifest -Path '.\MyManifest.psd1' -RequiredAssemblies 'C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.Online.SharePoint.Client.Tenant.dll'
然后使用导入模块:

Import-Module -Name '.\MyManifest.psd1'

您只需在Powershell中编写以下内容

[System.Reflection.Assembly]::LoadFrom("PATH TO ASSEMBLY")

请参阅Microsoft的这篇文章并查看加载方法

,不幸的是,这不起作用。因为在加载模块时,我需要为特定的程序集dll提供一个(不同的)路径。这可能吗?@ShenPrabu您必须查看该模块的清单文件,看看它是否以这种方式加载dll,然后只替换该路径。即使我给出了该路径,也为与解决方案并行的程序集(即与solution.dll位于同一路径的dll)提供了优先级。