Visual Studio 2015 - 无法添加虚拟目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Studio 2015 - 无法添加虚拟目录相关的知识,希望对你有一定的参考价值。

我们在Visual Studio中将一些站点作为Web站点项目运行。我们最近升级到了VS2015。现在我们无法将虚拟目录添加到新网站。

我们已经尝试右键单击“添加新虚拟目录”,我们在其中收到错误消息以及编辑Project文件夹中的applicationhost.config。

这是VS2015的错误还是有办法创建目录?在升级到VS2015之前,已经在IIS Express上运行的项目没有问题。

PS:我知道线程here但它没有帮助。

答案

FileSystem网站到IIS Express。

  1. 打开VS2015(右键单击并选择以管理员身份运行)。
  2. 单击文件>新建>网站...
  3. 在“新建网站”对话框中,单击“浏览...”按钮。
  4. 在左窗格中选择“本地IIS”。并在右侧窗格中选择“IIS Express站点”。
  5. 顶部右侧有4个按钮。单击“创建新站点”按钮。
  6. 输入名称并单击“打开”。这将在Web位置选择HTTP。
  7. 单击确定。
  8. 然后关闭解决方案。
  9. 从Users \ Documents IISExpress config文件夹中打开applicationhost.config。你可以在记事本中打开。
  10. 在站点部分找到您的网站。并更改内部的物理路径(virtualDirectory path =“/”physicalPath =“C: WebApp WebSite1”)。编写现有Web项目的路径。
  11. 保存并关闭applicationhost.config文件。
  12. 运行VS2015(以管理员身份运行)。
  13. 单击文件>打开>网站...
  14. 在“打开网站”对话框中,从左窗格中选择“本地IIS”。
  15. 在IIS Express站点下选择您的站点,然后单击“打开”。
  16. 单击“网站”菜单和“新建虚拟目录”...
  17. 提供别名和文件夹路径,然后单击“确定”。

现在您可以毫无错误地创建它。

另一答案

上面的答案都没有对我有用,我仍然不确定为什么会这样,但这就是我所做的:

修改驻留在项目中的Applicationhost.config文件:

最初它看起来像这样:

<site name="Website" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:...MyWebsite" />
    </application>

    <bindings>
        <binding protocol="http" bindingInformation="*:51005:localhost" />
    </bindings>
</site>

我不得不添加另一个应用程序路径条目:

<application path="/mywebsite" applicationPool="Clr4IntegratedAppPool">
    <virtualDirectory path="/" physicalPath="C:...MyWebsite" />
</application>

所以最终看起来像这样:

<site name="Website" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:...MyWebsite" />
    </application>

    <application path="/mywebsite" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:...MyWebsite" />
    </application>

    <bindings>
        <binding protocol="http" bindingInformation="*:51005:localhost" />
    </bindings>
</site>
另一答案

如果你有解决方案文件“.sln”,请选择,然后按照以下步骤操作:

  1. 使用记事本打开解决方案文件。
  2. 找到以项目开头的行(“{

例如:

项目(“{E24C65DC-7377-472B-9ABA-BC803B73C61A}”)=“WebProject1”,“WebProject1”,......

然后将其更改为:

项目(“{E24C65DC-7377-472B-9ABA-BC803B73C61A}”)=“WebProject1”,“http://localhost:12345/WebProject1”,......

并添加新的属性

SlnRelativePath =“C: WebProject1 ”

在ProjectSection(WebsiteProperties)中

例如,ProjectSection来自

Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebProject1", "WebProject1", "{6D411253-734E-401A-A049-9620FC55D4FB}"
    ProjectSection(WebsiteProperties) = preProject
        UseIISExpress = "true"
        TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0"
        Debug.AspNetCompiler.VirtualPath = "/WebProject1"
        Debug.AspNetCompiler.PhysicalPath = "C:WebProject1"
        Debug.AspNetCompiler.TargetPath = "PrecompiledWebWebProject1"
        Debug.AspNetCompiler.Updateable = "true"
        Debug.AspNetCompiler.ForceOverwrite = "true"
        Debug.AspNetCompiler.FixedNames = "false"
        Debug.AspNetCompiler.Debug = "True"
        Release.AspNetCompiler.VirtualPath = "/WebProject1"
        Release.AspNetCompiler.PhysicalPath = "C:WebProject1"
        Release.AspNetCompiler.TargetPath = "PrecompiledWebWebProject1"
        Release.AspNetCompiler.Updateable = "true"
        Release.AspNetCompiler.ForceOverwrite = "true"
        Release.AspNetCompiler.FixedNames = "false"
        Release.AspNetCompiler.Debug = "False"
    EndProjectSection
EndProject

终于成为了这个:

Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebProject1", "http://localhost:12345/WebProject1", "{6D411253-734E-401A-A049-9620FC55D4FB}"
    ProjectSection(WebsiteProperties) = preProject
        UseIISExpress = "true"
        TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0"
        Debug.AspNetCompiler.VirtualPath = "/WebProject1"
        Debug.AspNetCompiler.PhysicalPath = "C:WebProject1"
        Debug.AspNetCompiler.TargetPath = "PrecompiledWebWebProject1"
        Debug.AspNetCompiler.Updateable = "true"
        Debug.AspNetCompiler.ForceOverwrite = "true"
        Debug.AspNetCompiler.FixedNames = "false"
        Debug.AspNetCompiler.Debug = "True"
        Release.AspNetCompiler.VirtualPath = "/WebProject1"
        Release.AspNetCompiler.PhysicalPath = "C:WebProject1"
        Release.AspNetCompiler.TargetPath = "PrecompiledWebWebProject1"
        Release.AspNetCompiler.Updateable = "true"
        Release.AspNetCompiler.ForceOverwrite = "true"
        Release.AspNetCompiler.FixedNames = "false"
        Release.AspNetCompiler.Debug = "False"
        SlnRelativePath = "C:WebProject1"
    EndProjectSection
EndProject
另一答案

与WhizBang的回答类似......

删除根项目文件夹中的文件(如果您愿意,请备份)

.vsconfigapplicationhost.config 

清空项目文件中的IISUrl标记(如果存在)

<IISUrl></IISUrl>

转到项目属性并尝试再次创建虚拟URL。

以上是关于Visual Studio 2015 - 无法添加虚拟目录的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2015无法添加服务参考

C ++ boost nuget无法打开文件Visual Studio 2015

为啥 Visual Studio 2015 控制台运行程序无法识别 MSpec?

在 Visual Studio 2015 中无法识别 LocalDB

无法在 Visual Studio 2017 RC 中添加全局 JavaScript Intellisense 引用

用于 bower.json 文件的 Visual Studio 2015 RC 上的 Intellisense 无法正常工作。