inversionhourglass / Rougamo

Compile-time AOP component. Works with any method, whether it is async or sync, instance or static. Uses an aspectj-like pattern to match methods.
MIT License
393 stars 47 forks source link

VS2019版本MSBuild编译存在System.ValueTuple未能加载的问题 #31

Closed flysafely closed 1 year ago

flysafely commented 1 year ago

6d56eab99f1e9ad8c591dc39d72123a 目前有两种解决方法: 1.将VS版本升级到2021或者更高(可能是编译器升级后将引用重定向,问题解决) 2.将Rougamo版本降低到1.1.4-alpha版本(作者在改版本中取消了使用ValueTuple,问题解决)

inversionhourglass commented 1 year ago

根据错误中的相关 issue 可知,该问题主要在于老的NuGet管理方式会自动在 app.config 中添加 dependentAssembly 节点,从而导致 System.ValueTuple.dll 没有在编译时输出到bin目录中。 在相关 issue 中给出的主要解决方式是将NuGet管理方式升级为 PackageReference ,关于如何升级可以参考 官方文档 。 在相关 issue 中的另一个解决方案是将 System.ValueTuple.dll 手动拷贝到 GAC 目录

C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.ValueTuple\v4.0_0.0.0.0__cc7b13ffcd2ddd51

@flysafely 提到的第一种解决方案,可能是高版本的VS会执行这一步,也可能是高版本的VS在老的NuGet管理方式上与低版本的有所不同。 Rougamo为了避免这个问题,将修改代码中使用到ValueTuple的地方, @flysafely 提到的1.1.4-alpha版本是针对于他所面临的其他问题所特用的版本。考虑到这个问题是相对限定的场景才会发生,所以不会针对该问题发布一个新的NuGet版本,该问题将在下一个正式版中一同修复。

inversionhourglass commented 1 year ago

该问题已在1.3.4版本中一同修复