2

我有一个 DLL MyAssemblyOne.dll,它只包含一个带有静态方法的类:

namespace MyAssemblyOne 
{
   public class MyClassOne 
   {
      public static string MyStaticMethod()
      {
         ...
      }
   }
} 

到目前为止一切都很好,生成了程序集 MyAssemblyOne.dll。

现在我有另一个 DLL,MyAssemblyTwo.dll,它依赖于 MyAssemblyOne.dll,并像这样使用它:

    no using here;
    namespace MyAssemblyTwo 
    {
       public class MyClassFromAssemblyTwo 
       {
          public string SomeRandomMethod()
          {
             ...
             var smth = MyAssemblyOne.MyClassOne.MyStaticMethod();
             ...
          }
       }
    }

现在,我创建了一个 Xamarin 项目,并将链接设置为Sdk Assemblies OnlyUse Shared Runtime禁用(基本上是发布模式),然后添加我的两个 DLL - MyAssemblyTwo.dll 和 MyAssemblyOne.dll。该应用程序构建正常,但是当我运行它时,我得到类似: cannot find MyAssemblyOne.dll.

请注意,如果 Linking 选项设置为None.

但是,如果我将 MyAssemblyOne 的 MyAssemblyTwo 用法更改为:

using MyAssemblyOne;

namespace MyAssemblyTwo 
{
   public class MyClassFromAssemblyTwo 
   {
      public string SomeRandomMethod()
      {
         ...
         var smth = MyClassOne.MyStaticMethod();
         ...
      }
   }
}

即使将链接设置为 ,一切正常Sdk Assemblies Only

链接器如何工作?为什么如果我有一个using声明一切都很好,但如果我直接在代码中使用程序集名称它会中断。

值得一提的是,MyAssemblyOneMyAsseblyTwo是 . netstandard20项目。

4

0 回答 0