Целевой пакет MSBuild не найден

Я хотел немного уточнить ответ безжизненным , потому что, когда я начал читать о том, как использовать super () в иерархии множественного наследования в Python, я не получил его немедленно.

Что вам нужно понять, так это то, что super(MyClass, self).__init__() предоставляет следующий метод next __init__ в соответствии с используемым алгоритмом упорядочивания разрешения метода (MRO) в контексте полного наследования иерархия .

Эта последняя часть имеет решающее значение для понимания. Рассмотрим снова пример:

class First(object):
  def __init__(self):
    super(First, self).__init__()
    print "first"

class Second(object):
  def __init__(self):
    super(Second, self).__init__()
    print "second"

class Third(First, Second):
  def __init__(self):
    super(Third, self).__init__()
    print "that's it"

В соответствии с этой статьей о порядке разрешения метода Гвидо ван Россума вычисляется порядок разрешения __init__ (до Python 2.3) используя «перекос по левому краю по глубине»:

Third --> First --> object --> Second --> object

После удаления всех дубликатов, кроме последнего, получаем:

Third --> First --> Second --> object

Итак, позволяет следить за тем, что происходит, когда мы создаем экземпляр класса Third, например x = Third().

  1. В соответствии с MRO __init__ третьего вызывается первым.
  2. Далее, согласно MRO, внутри метода __init__ super(Third, self).__init__() разрешается __init__ метод First, который вызывается.
  3. Внутри __init__ Первого super(First, self).__init__() вызывает __init__ из Во-вторых, потому что это то, что диктует MRO!
  4. Внутри __init__ of Second super(Second, self).__init__() вызывает __init__ объекта, что ничего не значит. После этого будет напечатан «второй».
  5. После завершения super(First, self).__init__() будет напечатан «первый».
  6. После завершения super(Third, self).__init__() будет напечатан «это все».

Это объясняет, почему создание экземпляра Third () приводит к:

>>> x = Third()
second
first
that's it

. Алгоритм MRO был улучшен с Python 2.3, чтобы хорошо работать в сложных случаях, но я думаю что использование «перемотки по глубине слева направо» + «удаление дубликатов ожидается для последнего» все еще работает в большинстве случаев (прокомментируйте, если это не так). Обязательно прочитайте сообщение в блоге Guido!

71
задан Jeroen 10 November 2015 в 10:08
поделиться

3 ответа

Я только что заставил это работать без установки VS2010, выполнив следующие шаги на сервере сборки:

  1. Если .NET Framework 4 не установлен, установите его
  2. Установите инструмент Web Deployment из http://www.iis.net/download/webdeploy
  3. Из папки C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0 на вашей машине dev скопируйте папки "Web" и "Web Applications" в эквивалентный каталог на сервере сборки.

Это, кажется, работает для меня

108
ответ дан 24 November 2019 в 12:42
поделиться

На сервере сборки должен быть установлен .Net 4.0. При установке .Net 4.0 будет установлен новый MSBuild 4.0, который поддерживает упаковку проектов веб-приложений.

Кроме того, когда вы запускаете msbuild.exe, убедитесь, что вы используете тот, который находится в папке .Net 4.0 framework.

1
ответ дан 24 November 2019 в 12:42
поделиться

Для решения этой проблемы установите Visual Studio 2010 на сервере сборки и убедитесь, что вы установили Visual Web Developer характерная черта.

-3
ответ дан 24 November 2019 в 12:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: