部署到Azure App Service时缺少Application Insights DLL

时间:2015-10-18 00:16:06

标签: .net azure msbuild azure-application-insights

发布到Azure App Service后,我收到以下错误。

  

无法加载文件或程序集'Microsoft.ApplicationInsights,   Version = 1.2.0.5639,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'   或其中一个依赖项。系统找不到指定的文件。

在WebAPI项目中,我清楚地看到Microsoft.ApplicationInsights引用,版本号是“1.2.0.5639”。

我使用VSO作为我的构建服务器(vNext不是基于XAML的)。我注意到在VSO构建日志中我收到了一条警告,说明DLL也丢失了。

  

C:\ Program Files   (86)\的MSBuild \ 14.0 \ BIN \ Microsoft.Common.CurrentVersion.targets(1819,5):   警告MSB3245:无法解析此引用。找不到   程序集“Microsoft.ApplicationInsights,Version = 1.2.0.5639,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35,   processorArchitecture = MSIL“。检查以确保程序集存在   磁盘。如果您的代码需要此引用,您可能会得到   编译错误。

构建服务器也清楚地显示了这一点:

  

主要参考“Microsoft.ApplicationInsights,版本= 1.2.0.5639,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35,   ProcessorArchitecture用于= MSIL”。

发出以下警告:

  

[警告] C:\ Program Files(x86)\ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets(1819,5):

     

警告MSB3245:无法解析此引用。找不到   程序集“Microsoft.ApplicationInsights,Version = 1.2.0.5639,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35,   processorArchitecture = MSIL“。检查以确保程序集存在   磁盘。如果您的代码需要此引用,您可能会得到   编译错误。

我现在唯一能想到的可能是处理器架构是MSIL的问题吗?

更新:我还发布了3个Web作业(每个作业用户凭借自己的权限)。目前我将webjobs包含在'webjobs-list.json'文件中,但是我将其删除以希望隔离问题。似乎2/3 webjobs能够找到DLL并将其复制到

更新2:从JSON文件中删除WebJobs没有帮助。

更新3:好的,所以我设法让它运转起来。但是,仅当我从Visual Studio IDE部署时,而不是通过我在VSO上的自动构建。 :*(我通过右键单击WebAPI项目然后查找Application Insights菜单项并使用'添加应用程序洞察向导'来使用Visual Studio上下文菜单。这很奇怪,因为App Insights在此项目中已经工作了很长时间。但是在我将它链接到我现有的应用洞察实例后,它在web.config中添加了一些条目。构建/部署让WebAPI重新开始工作。我甚至将WebJobs添加回JSON文件。

3 个答案:

答案 0 :(得分:0)

确保DLL的属性视图中Copy Local设置为" True"

答案 1 :(得分:0)

另一个猜测 - 可能是包文件夹路径的问题?与本地安装相比,VSO构建可能有所不同吗?如果它用于引用包文件夹

,请确保定义SolutionDir变量

答案 2 :(得分:0)

就我而言,当我通过Visual Studio中的解决方案资源管理器上下文菜单将Application Insights添加到我的项目时,所有NuGet包都(不知何故)未正确添加。

我的解决方案将在本地构建,但在使用Visual Studio Team Services构建时,此问题中所述将会失败。删除我的本地工作区后,再次从VSTS下载所有内容,尝试在本地构建我的解决方案将失败的方式与在线时相同。

我发现虽然我最初在计算机上安装了所有必需的NuGet软件包,但点击"添加应用程序洞察遥测..."上下文菜单项没有正确更新我的packages.config文件。

因此,在构建服务器上,清理完工作区文件夹后,NuGet无法恢复所有必需的软件包,因为它们并未全部列在packages.config文件中。

缺少的包是:

<package id="Microsoft.ApplicationInsights" version="2.1.0" targetFramework="net45" />
<package id="Microsoft.ApplicationInsights.Agent.Intercept" version="1.2.1" targetFramework="net45" />

我的解决方案是回滚添加了Application Insights的变更集,以防其他任何我不知道的情况被破坏,然后使用上下文菜单选项将其重新添加回来。它第二次似乎正常工作。