如何在使用Import-Module时指定程序集的路径

时间:2018-04-24 11:30:55

标签: c# powershell sharepoint .net-assembly import-module

我有一个Solution.dll,其中包含打开SharePoint Online Management Shell的方法,并执行上述here所述的操作。当我这样做时,我偶尔会遇到异常,

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'.

问题是我在Microsoft.Online.SharePoint.Client.Tenant.dll所在的同一目录中有旧版Solution.dll。它没有SPOConditionalAccessPolicyType类。而C:\ Program Files \ SharePoint Online Management Shell \ Microsoft.Online.SharePoint.PowerShell \ Microsoft.Online.SharePoint.Client.Tenant.dll'有班级。

因此,当我想访问Online Management 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路径,无论是否存在汇编。

2 个答案:

答案 0 :(得分:1)

您可以使用模块清单来完成此操作:

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

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

答案 1 :(得分:0)

您可以在Powershell中编写以下内容。

$("#btn").click(function() ( 
    window.location.href = "http:\\Web2.com\Test"
)}

请参阅Microsoft msdn.microsoft.com中的这篇文章,并查看加载方法