我有一个 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 Only
并Use 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
声明一切都很好,但如果我直接在代码中使用程序集名称它会中断。
值得一提的是,MyAssemblyOne和MyAsseblyTwo是 . netstandard20项目。