.net - Visual Studio + Azure - 部署将引用复制到输出目录

标签 .net azure visual-studio-2013 assemblybinding

我的 Azure Web 项目刚刚开始出现程序集绑定(bind)错误 - 找不到 Microsoft.Data.Edm v5.6.2.0。

我的项目从 nuget 包引用该版本的程序集。

我发现的是:

  • 当我构建项目时,bin\文件夹包含正确版本的程序集。
  • 当我将项目部署到 Azure 模拟器时,bin\中的程序集会被旧版本覆盖:v5.6.0.0。

我的解决方案中的任何项目都没有引用旧版本,但 Microsoft.WindowsAzure.Storage v4.2.1.0 引用了它,而我的项目又引用了它。

(事实上,存储程序集引用了我的项目也引用的三个程序集的旧版本:Microsoft.Data.Edm、Microsoft.Data.OData 和 Microsoft.Data.Services.Client -所有三个较新的程序集在部署时都会被较旧的程序集覆盖。)

此行为突然发生:我正在迭代一些维护,今天下午第 20 次按 Ctrl+F5,突然看到错误。

  • 较新的版本会在 Web 项目的 bin\ 文件夹中被覆盖,但在 [azure 项目]\csx\Debug\roles\中不会被覆盖[Web 项目名称]\approot\bin[azure 项目]\obj\Debug\[Web 项目名称]\bin 文件夹
  • 受影响的引用设置为复制本地
  • 项目文件的差异显示自上次提交以来没有任何更改
  • 同一解决方案中的 Azure 辅助角色具有相同的引用集,但不受影响
  • 重新启动 VS 或重新启动都无法解决问题

有没有办法让 Visual Studio 重新站稳脚跟?

最佳答案

欢迎来到疯狂小镇:

  1. 注意覆盖新程序集的旧程序集的时间戳
  2. c:\> dir/s microsoft.data.edm.dll
  3. 发现,在大约 20 个副本中,时间戳与 C:\Program Files (x86)\Microsoft WCF Data Services\5.6\bin\.NETFramework 中的文件相匹配 - 没用过
  4. 删除这些副本并重建
  5. 看到三个引用中的两个在部署时不再被覆盖,但 Microsoft.Data.Services.Client.dll 仍然如此! - 但来自具有另一个时间戳的源文件
  6. 查找该文件的来源:它位于 C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\v2.3\ref
  7. 删除它,然后重建 - 不再覆盖!问题解决了!

我只希望知道为什么......

关于.net - Visual Studio + Azure - 部署将引用复制到输出目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25694797/

相关文章:

c# - .NET 多线程后台进程有线程限制吗?

java - Android:无法创建泛型类

visual-studio-2012 - F# 3.1 是否可用于 VS 2013 Express for Web?

mysql - 在azure中如何与组成员共享mysql数据库资源

c++ - Microsoft Build Tools 2013 缺少 v120 目录

c++ - 类内成员初始值设定项因 VS 2013 而失败

c# - ADO.NET 数据服务

c# - 如何格式化/更改属性网格中的显示值

c# - 可用于测试国际化和本地化库的单数和复数形式的非英语短语有哪些?

azure - 如何在 Azure 管道上运行 Karate API 测试