【问题标题】:Referenced dll (built from referenced projects) are locked after each build in Xamarin Forms Portable project?每次构建 Xamarin Forms Portable 项目后,引用的 dll(从引用的项目构建)被锁定?
【发布时间】:2017-12-13 04:07:21
【问题描述】:

我正在构建我的第一个 Xamarin Forms 应用程序(我之前构建过一个,但它是一个 Xamarin Android 应用程序)。有一个奇怪的问题会阻止我每次调试我的应用程序。主要的 Xamarin Forms Portable 项目有 2 个来自其他可移植库项目的其他引用。因此,在 Android 项目(只是一个示例)上的每次构建之后,2 个输出 DLL(来自引用的项目)被锁定(由 devenv.exe)。这意味着我不能在保持 VS 打开的同时简单地重建它。在重新打开我的项目并再次构建之前,我必须关闭 VS 并手动删除输出 DLL。这是完全不能接受的。

我发现输出 dll 以某种方式缓存在名为 ProjectAssemblies 的文件夹中,它通常位于 C:\Users[UserAccount]\ AppData\Local\Microsoft\VisualStudio\14.0\ProjectAssemblies(适用于 Visual Studio 2015)。

但这只是我认识的一个奇怪信号,我的意思是这似乎不是真正的问题,因为即使我删除了那里的所有文件,在重新启动 VS 后,输出 dll 仍然以某种方式加载到 devenv.exe(我使用 Process Hacker 找到了这些 dll 并知道它们是由 devenv.exe 加载的)。防止这种情况的唯一方法是删除文件夹 bin 中的输出 dll。但这只能工作一次,如果重建项目我必须重做所有这些步骤(关闭 VS,删除输出 dll,重新打开 VS)。

唯一的最终方法可能是将输出 DLL 添加为引用(而不是项目),但这不允许在引用的项目中轻松调试代码(仍然引用的项目是主要解决方案的一部分,它们不是某种即用型的独立库)。

更新

通过使用 Process Hacker,我知道 Xamarin Forms 项目的一些必要 DLL(例如 Xamarin.Forms.Core.dll)也被加载到 devenv.exe但是它们是从 ProjectAssemblies 中的路径加载的(如前所述)。所以这些 DLL 没有被锁定,它们可以从 bin 文件夹中清除。但不知何故,我的项目 dll 并没有以同样的方式处理。 devenv.exe 中似乎加载了 2 个版本,一个来自 ProjectAssemblies,另一个来自bin 文件夹(特定于平台的项目,而不是主要可移植项目的)。所以这就是为什么它被锁定并且在重建时不能被清除/覆盖。

【问题讨论】:

  • 我在 VS2017 和 Xamarin.Forms 项目中遇到了类似的问题。我通过删除所有引用项目和主应用程序项目中的所有 bin 和 obj 文件夹来修复它。关闭 VS,在 Windows 资源管理器或命令提示符下浏览所有引用的项目,删除它们的 bin 和 obj 文件夹。重新启动 VS 并进行完全重建后,我的构建一直有效。这是在 VS2017 上的,所以有点不同,所以不确定 VS2015 是否可以以相同的方式解决。
  • @PedroSilva 感谢您的意见。好吧,实际上我发现只有在构建失败后才会出现问题(例如某些语法错误)。所以一旦发生这种情况,我需要关闭 VS,删除 bin 文件夹中的 dll 并重新打开 VS。但是如果我在构建和调试之前小心避免语法错误,它应该可以正常工作。

标签: visual-studio xamarin dll build xamarin.forms


【解决方案1】:

我认为您遇到了在版本 15.2 (26430.12) 中修复的 issue(编译失败,因为进程无法访问 dll)。查看release notes

对于包括我在内的许多开发人员来说,这个特定的错误是一场噩梦。

如果是这种情况,更新 V​​isualStudio 将解决它。

【讨论】:

  • 我不确定这是否是我的情况(请参阅我对 Predro Silva 关于我的问题的评论),但仍然感谢您的回答。目前我将避免更新 VS(我拥有的当前版本是 14.0 (23107.0),因为它可能会耗费大量时间。我会给这个答案 1 个赞成票,但仍然不确定接受是否可以。
猜你喜欢
  • 2020-01-29
  • 1970-01-01
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-06
  • 2021-10-24
相关资源
最近更新 更多