У меня есть 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 с Linking, установленным на Sdk Assemblies Only
и Use Shared Runtime
отключен (в основном режим выпуска), и я добавляю две мои библиотеки - MyAssemblyTwo.dll и MyAssemblyOne.dll.Приложение работает нормально, но когда я его запускаю, я получаю что-то вроде: cannot find MyAssemblyOne.dll
.
Обратите внимание, что это работает, если для параметра Связывание установлено значение None
.
Однако, если я изменю MyAssemblyTwo, использование MyAssemblyOne будет:
using MyAssemblyOne;
namespace MyAssemblyTwo
{
public class MyClassFromAssemblyTwo
{
public string SomeRandomMethod()
{
...
var smth = MyClassOne.MyStaticMethod();
...
}
}
}
все работает нормальнодаже если для Linking установлено значение Sdk Assemblies Only
.
Как работает компоновщик?Почему, если у меня есть оператор using
, все в порядке, но если я использую имя сборки прямо в коде, оно ломается.
Стоит отметить, что MyAssemblyOne и MyAsseblyTwo являются netstandard20 проектами.