12

今天我只是在 Instrumentation 模式下使用 Visual Studio 的分析器分析我的 WCF 应用程序。后来我需要发布到我的 Web 服务器,突然我收到一条错误消息,提示找不到 Microsoft.VisualStudio.Enterprise.AspNetHelper 文件路径。

当我查看我的 web.config 时,我看到分析会话添加了以下几行。

  <system.web>
<compilation targetFramework="4.0" debug="true" assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, 
Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>


      <runtime>
<generatePublisherEvidence enabled="false"/>

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Microsoft.VisualStudio.Enterprise.AspNetHelper" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
            <codeBase version="12.0.0.0" href="file:///C:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio%2012.0/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.Enterprise.AspNetHelper.DLL"/>
            </dependentAssembly></assemblyBinding></runtime>

<appSettings>
<!--<add key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation" value="C:\Program Files (x86)\Microsoft Visual Studio 12.0\Team Tools\Performance Tools\vsinstr.exe"/>-->
</appSettings></configuration>

很明显,它会在服务器上查找一些 DLL,但是由于未安装 VS,因此该路径在服务器上无效,因此会引发异常。为什么会发生这种情况以及如何避免在 web.config 中添加这些行?每次我进行分析会话时删除这些行会非常麻烦。

更新:这个问题也发生在 VS2015 上。如果您启动 VS 分析工具,它会在 web.config 中添加一行

>   <add
> key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation"
> value="C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team
> Tools\Performance Tools\vsinstr.exe"/>    <dependentAssembly>
>               <assemblyIdentity name="Microsoft.VisualStudio.Enterprise.AspNetHelper" 
> culture="neutral"/>
>               <codeBase version="14.0.0.0" href="file:///C:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio%2014.0/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.Enterprise.AspNetHelper.DLL"/></dependentAssembly>

如果您发布到服务器,您将在下面收到此错误

Configuration error

说明:处理此请求所需的配置文件时出错。检查下面的特定错误详细信息并适当地修改您的配置文件。

解析器错误消息:文件或程序集 'Microsoft.VisualStudio.Enterprise.AspNetHelper,版本 = 14.0.0.0,文化 = 中性,PublicKeyToken =“或其依赖项之一未找到。系统找不到指定的文件。

源错误:

服务器上发生应用程序错误。由于此应用程序的当前自定义错误设置,可以远程显示应用程序错误的详细信息(出于安全原因)。但是,它们可以被本地服务器上运行的浏览器查看。

源文件:C:\www\web.config 行:52

加载跟踪程序集:可以通过以下信息确定,为什么无法加载程序集 Microsoft.VisualStudio.Enterprise.AspNetHelper, Version = 14.0.0.0, Culture = Neutral, PublicKeyToken = b03f5f7f11d50a3a。

警告:程序集绑定日志记录已关闭。您可以启用记录程序集绑定失败,删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 为 1 组。注意:程序集绑定日志记录错误会导致一定的性能损失。可以关闭这个功能,去掉注册表值【HKLM\Software\Microsoft\Fusion!启用日志]。

4

2 回答 2

6

就我而言,这是 Visual Studio Profiler 的问题。它会检查 web.config 中的本地 exe 路径。我在 web.config 中评论了以下 2 行,它解决了我的问题。

<!--<compilation debug="true" targetFramework="4.5" assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>-->
<!--<add key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation" value="C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Performance Tools\vsinstr.exe"/>-->
于 2017-03-22T18:12:43.493 回答
1

我遇到了问题:使用分析器后无法设置断点。分析器web.config用上述两行改变了。注释掉关键行并将编译行改回原来的:

<compilation defaultLanguage="c#" debug="true" targetFramework="4.5.2">

问题消失了,我可以逐步设置断点和调试。

于 2019-10-18T15:17:39.710 回答