Visual Studio прекращает отладку единого проекта - PullRequest
0 голосов
/ 25 февраля 2019

Настройка: Unity 2017.4.16f1 / 2018.2.18f1

У меня есть собственная письменная библиотека C#, использующая .Net.Библиотека отлично работает в приложении Winforms.Обычно он связывается с серверным приложением и получает некоторые данные.

Теперь мы хотим визуализировать данные в Unity.Для этого я следовал этому руководству: https://docs.unity3d.com/Manual/UsingDLL.html. Вкратце: перетащите библиотеку в папку ресурсов, добавьте новый скрипт и получите доступ к библиотеке.Моей первой проблемой была совместимость.Потому что сначала я использовал Unity 2017.4.16f1, мне нужно было понизить библиотеку с .Net 4.7.2 до .Net 4.6 и изменить настройки проекта на ту же .Net среду.После избавления от всех ошибок компилятора я столкнулся с моей текущей проблемой.

Я прикрепил Visual Studio 2017 к единице, настроил точку останова и запустил приложение в Unity.Точка останова находится при первом вызове функции из моей пользовательской библиотеки.Точка останова достигнута.Но если я говорю «Перешагни» (либо щелчком, либо F10), активная линия не переключается, и я возвращаюсь к Unity.Как будто я никогда не начинал отлаживать.Unity продолжается, как будто ничего не произошло.

После этого я попробовал это с Unity 2018.2.18f1.Тем не менее, есть та же проблема.Библиотека не называется.

Что касается некоторых проблем совместимости, я создал проект Unity.Ошибка не возникает.Наконец я сократил внешнюю библиотеку до базового уровня.Но опять я получил это странное поведение.Ниже приведен скрипт для единства и пример класса из пользовательской библиотеки.Спасибо за каждый совет.

C#:

[Serializable]
public class PostgreSQLParameters

[XmlElement(ElementName = "PostgreSQL_User", IsNullable = false)]
public string UserName
{
    get
    {
        return this.userName;
    }

    set
    {
        if (this.userName == value)
            return;
        this.userName = value;
        this.OnPropertyChanged();
    }
}

public PostgreSQLParameters()
{ }

Unity:

void Start () {

    string cwd = Directory.GetCurrentDirectory();
    string pathVariable = Environment.GetEnvironmentVariable("PATH");

    try
    {
        //this line has the break point, untill here all is ok
        //after the Debug steps in, I hit F10 here to get to the next line,
        //which should be the bracket befor the catch

        PostgreSQLParameters parameter = new PostgreSQLParameters();
    }  // The cursor should be here after hitting F10, but disappears only
    catch (Exception)
    {

        throw;
    }
}

1 Ответ

0 голосов
/ 26 февраля 2019

Основная проблема - это зависимости.Я сравнил зависимости в моей библиотеке с ними из проекта Unity в Visual Studio.Оказывается, библиотека не была связана в Unity: System.Data.DataSetExtension.Есть два решения:

A) Если они вам не нужны, пропустите их в своей библиотеке.Удалите ссылку в библиотеке и скомпилируйте снова

B) Или, если они вам нужны, и это часть .Net, сделайте следующее (не проверено):

См. https://docs.microsoft.com/en-us/visualstudio/cross-platform/unity-scripting-upgrade?view=vs-2017#adding-assembly-references-when-using-the-net-4x-api-compatibility-level

  1. добавить файл с именем mcs.rsp в корень ресурса

  2. Вставить строку -r: System.Data.DataSetExtension (взять имянужной вам ссылки)

  3. Перезапустите Unity

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...