如何引用Microsoft.Web.Administration?

时间:2013-08-07 13:04:56

标签: .net iis

Microsoft.Web.Administration程序集位于我的计算机上的C:\Windows\System32\inetsrv中。我相信它是作为IIS的一部分安装的。该大会也在GAC中。

我应该如何从项目中引用此程序集,因为我想将项目提交给SVN以供其他人签出。 Microsoft.Web.Administration未出现在Visual Studio的“添加引用”列表中。我可以添加对C:\Windows\System32\inetsrv\Microsoft.Web.Administration的引用,但这似乎是一个坏主意,因为其他开发人员可能将它安装在不同的路径或驱动器上。

或者我可以将它复制到项目文件夹中,但是我必须将二进制文件提交给SVN。

11 个答案:

答案 0 :(得分:39)

以下步骤对我有用:

  1. 转到C:\Windows\System32\inetsrv并检查文件Microsoft.Web.Administration.dll是否存在。如果您遗漏了Microsoft.Web.Administration.dll中的C:\Windows\System32\inetsrv,请在Windows功能中启用IIS管理控制台:
  2. Adding the management service to windows features

    1. 在Visual Studio项目中,添加对Microsoft.Web.Administration.dll的引用: enter image description here
    2. 现在您的.proj文件包含以下条目:<HintPath>C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll</HintPath>。您可以将此路径调整为例如<HintPath>%windir%\System32\inetsrv\Microsoft.Web.Administration.dll</HintPath>使其更加强大。
    3. 当您将应用程序移动到其他系统时,该应用程序还会引用目标系统上的Microsoft.Web.Administration.dll。因为Microsoft.Web.Administration.dll在Windows系统之间可能不同,所以不建议应用程序提供此程序集文件的副本。 副本可能与目标系统上的IIS不兼容。

      也不建议在同一系统上引用程序集的副本,因为Microsoft.Web.Administrator.dll和IIS可能会因Windows Update而发生更改!然后,您引用的Microsoft.Web.Administrator.dll副本与更新的IIS不兼容。

      如果目标系统上缺少Microsoft.Web.Administrator.dll,请按照上面步骤1中的说明激活管理控制台。或者,您可以使用cmd(以管理员身份打开)并通过DISM.exe通过以下命令激活Windows功能管理控制台:

      C:\Windows\System32\Dism.exe /enable-feature /online /featurename:IIS-ManagementConsole
      

      当您想通过设置分发应用时,此命令非常有用。

答案 1 :(得分:11)

您可以手动修改项目文件。如下所示添加/更改引用将在GAC中找到程序集,无论其位置如何:

<Reference Include="Microsoft.Web.Administration, Version=7.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
    <SpecificVersion>False</SpecificVersion>
</Reference>

当然,如果功能&#34; IIS管理控制台&#34;仅安装。您可以在代码中留下一个提示:

#warning Windows feature "IIS management console" must be installed locally

答案 2 :(得分:6)

在NuGet中搜索并安装它。它将安装在packages文件夹中,根据您的项目结构更改位置并重新添加引用以反映新路径。通常我会创建一个lib文件夹并放置所有外部库。

项目的文件夹结构可以是

lib -> external libraries
src - > code
tools -> tools such as nant, etc

Microsoft.Web.Administration用于以编程方式管理IIS,并且无法从添加引用窗口中使用它。通过添加来自C:\ Windows \ System32 \ inetsrv的引用将创建引用问题。因此,最好将它放在项目内部的lib文件夹中,并在SVN中进行检查。

答案 3 :(得分:6)

  1. 如果您投影文件,请将提示路径更改为<HintPath>%windir%\System32\inetsrv\Microsoft.Web.Administration.dll</HintPath>
  2. 登记入住。 然后,如果安装了IIS,任何签出的人都应该看到正确的引用。如果未安装IIS,则需要解决参考错误。
  3. 要解决这个问题,他们可以通过控制面板中的程序安装IIS,也可以通过@DzmitryLahoda指出的命令行安装。

    同样,任何指向NuGet包的技巧都是不合适的,

    https://blog.lextudio.com/2015/05/whats-microsoft-web-administration-and-the-horrible-facts-you-should-know/

答案 4 :(得分:2)

C:\ Windows \ System32下\ INETSRV

C:\的Windows \ WINSXS \ x86_microsoft.web.administration-nonmsil_31bf3856ad364e35_6.1.7600.16385_none_c8472944f22a9c81

C:\的Windows \ WinSxS文件\ x86_microsoft.web.administration-nonmsil_31bf3856ad364e35_6.3.9600.16384_none_5d1097a8ac709c4e

答案 5 :(得分:2)

使用 Nuget

Microsoft.Web.Administration

enter image description here

答案 6 :(得分:1)

尝试通过prebuild事件确保安装这些程序集:

Dism /online /Enable-Feature /FeatureName:IIS-WebServerManagementTools /All

在已安装的整个IIS中以这种方式使用所有功能,因此使用FeatureName是程序集的猜测。接下来尝试列出替代的所有功能:

dism /online /Get-Features

8之前的

DISM适用于Windows: To service inbox drivers in an offline image of Windows Vista with Service Pack 2 (SP2) or Windows Server 2008 with SP2, you must use the Windows 7 version of DISM or PkgMgr. The Windows 7 version of DISM is available in Windows 7 and Windows PE 3.0 operating systems, or can be installed with the Windows Automated Installation Kit (Windows AIK) or the Windows OEM Preinstallation Kit (Windows OPK) for Windows 7.

也可以尝试Windows 7及以下版本: start /w pkgmgr /iu:IIS-WebServerManagementTools

答案 7 :(得分:1)

一些额外的信息,而不是直接的答案。 IIS和IIS Express使用同一DLL的两个不同版本,因此您的应用可能会意外地得到错误的版本。见http://rdingwall.com/2013/09/22/microsoft-web-administration-confusion/

答案 8 :(得分:1)

您始终可以动态加载dll,而从不直接在项目中引用它。这样,您可以避免所有“引用”问题,NuGet程序包等。但是,您仍然需要验证dll是否在最终目标上可用。

var windowsPath = Environment.GetFolderPath(Environment.SpecialFolder.Windows);

var DLL = Assembly.LoadFile($@"{windowsPath}\System32\inetsrv\Microsoft.Web.Administration.dll");

if (DLL != null)
{
    // Get Server...
    foreach (Type type in DLL.GetExportedTypes())
    {
        if (type.Name == "ServerManager")
        {
            dynamic server = Activator.CreateInstance(type);
            dynamic applicationPools = server.ApplicationPools;
            foreach (dynamic pool in applicationPools)
            {
                MessageBox.Show(pool.Name);
            }

            // Done -- Get Out...
            break;
        }
    }
}

答案 9 :(得分:0)

最简单的方法是从此链接在Visual Studio中安装NuGet。 http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c

然后,在Visual Studio中,转到Tools-&gt; NuGet Package Manager-&gt;包管理器控制台

然后,选择“默认项目”作为要安装到的项目。

最后,运行 Install-Package Microsoft.Web.Administration 命令。

答案 10 :(得分:-4)

将新项目添加到名为“引用程序集”的解决方案中,并将DLL添加到此项目中 - 这样DLL将位于源代码管理中。然后,您可以使用添加引用中的“浏览”选项来引用项目。

您的同事会很高兴因为您不会错过这个DLL,因为它在源代码管理中。

相关问题