.NET可移植类库包含Microsoft.VisualBasic作为依赖项。

4
我创建了一个可移植的类库,应该在Xamarin项目中使用,我从项目中显式移除了Microsoft.VisualBasic参考。在Xamarin项目中使用这个库会导致以下编译时错误:

加载程序集时出现异常:System.IO.FileNotFoundException: 无法加载程序集'Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'。也许它不存在于Mono for Android配置文件中? 文件名: "Microsoft.VisualBasic.dll" 在 Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters) 中 Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(ICollection1 assemblies, AssemblyDefinition assembly, Boolean topLevel) 中 Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(ICollection1 assemblies, AssemblyDefinition assembly, Boolean topLevel) 中 Xamarin.Android.Tasks.ResolveAssemblies.Execute()

当我使用依赖项检查器(ildasm.exe)检查.dll文件时,我注意到Microsoft.VisualBasic被列为依赖项:
.assembly extern Microsoft.VisualBasic
{
  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )                         // .?_....:
  .ver 10:0:0:0
}

有人能告诉我为什么Microsoft.VisualBasic仍然是类库的一个依赖项以及如何解决这个问题吗?

谢谢 Ced


你正在创建一个VB PCL吗?与C# PCL相比,这是一种有效的创建PCL的方式。否则,我们需要了解一些有关您如何创建此PCL的步骤。 - Jon Douglas
是的,这是一个VB PCL。 我是这样创建它的:文件 -> 新建项目 -> 类库(可移植) 然后我选择了 .Net Framework 4.5、Windows 8、ASP.NET CORE 1.0 和 Windows Phone 8.1 作为目标。 最后,我从引用中删除了 Microsoft.VisualBasic。 - Ced
我认为我们关于这个主题的文档应该会有所帮助:https://developer.xamarin.com/guides/cross-platform/application_fundamentals/pcl/portable_visual_basic_net/ 和 https://developer.xamarin.com/guides/cross-platform/application_fundamentals/pcl/portable_visual_basic_net/xamarin-forms/ 这里有很多需要注意的地方,请仔细阅读! - Jon Douglas
2个回答

0

你需要改变编译选项。只需将Option Strict切换为“On”,编译器就不会绑定Microsoft.Visualbasic。这取决于vb.net的后期绑定选项,有时可能会出现问题!

Xamarin太棒了...


0

因从未尝试过,所以很好奇。经过一番挖掘,找到了一些可能有用的细节。原来有一个编译器选项 -novbruntimeref 可供使用(见 Old Code Project Article)。搜索这段文本可以得到几个线索,表明你也可以手动编辑项目文件并添加行到属性组以达到同样的效果。

<NoVBRuntimeReference>On</NoVBRuntimeReference>

虽然有些页面的值是“true”,而不是“on”。但还没有测试过。


感谢您的努力,但将此添加到项目文件中并没有帮助 :/ - Ced

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接