如何引用Microsoft.Web.Administration?

Wey*_*ani 55 .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.

Sim*_*mon 41

以下步骤对我有用:

  1. 转到C:\Windows\System32\inetsrv并检查文件是否Microsoft.Web.Administration.dll存在.如果你缺少的Microsoft.Web.Administration.dllC:\Windows\System32\inetsrv,在你的Windows功能启用IIS管理控制台:

将管理服务添加到Windows功能

  1. 在Visual Studio项目中,添加对以下内容的引用Microsoft.Web.Administration.dll: 在此输入图像描述
  2. 现在您的.proj文件具有以下条目:<HintPath>C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll</HintPath>.您可以调整此路径以<HintPath>%windir%\System32\inetsrv\Microsoft.Web.Administration.dll</HintPath>使其更加健壮.

将应用程序移动到其他系统时,该应用程序还会引用Microsoft.Web.Administration.dll目标系统上的应用程序.因为Microsoft.Web.Administration.dllWindows系统之间可能不同,所以不建议应用程序提供此程序集文件的副本.副本可能与目标系统上的IIS不兼容.

也不建议在同一系统上引用程序集的副本,因为可能Microsoft.Web.Administrator.dll由于Windows Update而导致IIS更改!然后,您引用的副本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
Run Code Online (Sandbox Code Playgroud)

当您想通过设置分发应用程序时,此命令可能很有用.


小智 12

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

<Reference Include="Microsoft.Web.Administration, Version=7.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
    <SpecificVersion>False</SpecificVersion>
</Reference>
Run Code Online (Sandbox Code Playgroud)

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

#warning Windows feature "IIS management console" must be installed locally
Run Code Online (Sandbox Code Playgroud)

  • 虽然这可能不是每个人的答案,但这正是我所需要的.人们需要知道这个程序集有两个版本,一个用于IIS,另一个用于IIS Express.通过NuGet提供的可用于IIS,因此如果您确实需要IIS Express版本,那么这将无效.如果你这样做,通过NuGet添加它可能是更明智的途径. (2认同)

Sun*_*nny 6

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

项目的文件夹结构可以

lib -> external libraries
src - > code
tools -> tools such as nant, etc
Run Code Online (Sandbox Code Playgroud)

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

  • @dyslexicanaboko,通过NuGet打包是错误的,https://blog.lextudio.com/2015/05/whats-microsoft-web-administration-and-the-horrible-facts-you-should-know/ (2认同)

Lex*_* Li 6

  1. 如果您投影文件,请将提示路径更改为<HintPath>%windir%\System32\inetsrv\Microsoft.Web.Administration.dll</HintPath>.
  2. 签入.然后,如果安装了IIS,任何签出的人都应该看到正确的引用.如果未安装IIS,则需要解决参考错误.

要解决这个问题,他们要么通过控制面板中的程序安装IIS,要么通过@DzmitryLahoda指出的命令行安装IIS.

再次,任何指向NuGet包的技巧都是不合适的,

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

  • @ Bringer128看起来MS现在拥有MWA NuGet包,所以它可能不再那么错了. (3认同)