Цель «_CopyBinDeployableAssemblies» не существует в проекте

(Не так) маленький комментарий по 'частным' переменным при присвоении методов прототипу:

Это верно, что Вы не можете использовать конструктора для создания закрытия по, он - переменные, но можно, конечно, окружить формирующие прототип методы анонимной функцией и совместно использовать частные переменные между экземплярами объекта:

function Foo() {}

(function() {
    var sharedPrivateVar;
    Foo.prototype.methodWithAccessToSharedPrivateVar = function() {};
})();

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

function Foo() {
    this.registerInstance({ bar : 'baz' });
    this.registerInstance = undefined;
}

(function() {
    var store = {}, guid = 0;

    Foo.prototype.registerInstance = function(protectedProperties) {
        this.__guid = ++guid;
        store[this.__guid] = protectedProperties;
    };

    Foo.prototype.getProtectedProperty = function(name) {
        return store[this.__guid][name];
    };

})();

Этот подход не пострадает от обширного функционального объекта и создания закрытия, но времена поиска увеличений небольшим количеством.

Редактирование: необходимо также обеспечить функцию

Foo.prototype.unregisterInstance = function() {
    delete store[this.__guid];
};

Иначе, это - хороший способ представить утечку памяти...

Edit2: можно также обойти потребность в registerInstance() функция со следующим шаблоном:

Foo = (function() {
    var store = {}, guid = 0;

    function Foo() {
        this.__guid = ++guid;
        store[guid] = { bar : 'baz' };
    }

    Foo.prototype.getBar = function() {
        var privates = store[this.__guid];
        return privates.bar;
    };

    Foo.prototype.destroy = function() {
        delete store[this.__guid];
    };

    return Foo;
})();
26
задан Olaj 13 January 2011 в 14:40
поделиться

6 ответов

Ответ, данный Рагге выше, был тем, что мне было нужно. Но в моем случае я добавил только вторую строку. Первая строка, которую дал Рагге, уже была в файле проекта.

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
1
ответ дан 28 November 2019 в 06:53
поделиться

Ого, Джейкоб прав!

Когда мы устанавливаем VS 2010 SP1, путь MSBuild по умолчанию будет фокусироваться на папке

[C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0]

больше не

[C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0].

И файл [Microsoft.WebApplication.targets] имеет цель сборки с именем [_CopyBinDeployableAssemblies].

Итак, мы просто добавили цель [_CopyBinDeployableAssemblies] в наш файл проекта (можно открыть его с помощью Блокнота :)), проблема была решена

Пример: <Target Name="_CopyBinDeployableAssemblies"></Target>. Просто нужна пустая цель:)

3
ответ дан 28 November 2019 в 06:53
поделиться

Это VS 2013 SP 3, и у меня все еще есть эта проблема! Чтобы исправить это, мне пришлось изменить следующую строку в случае невозможности сборки проектов с:

<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" />

на следующую строку:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
1
ответ дан 28 November 2019 в 06:53
поделиться

Ну, сегодня я потратил 4 часа на это, и я решил это сейчас. Но, к сожалению, у меня нет однозначного ответа, в чем проблема. Но я опишу, что я сделал.

  1. Деинсталлировал SP 1 и получил пару ошибок. Это где, потому что у меня не было инсталляционного носителя VS, и там, где его просили.
  2. SP1, кажется, был удален, но я все еще получил ошибку.
  3. Скачал VS Ultimate Trial и попытался сделать ремонт, не помогло.
  4. Еще раз загрузил VS 2010 SP1 и установил его. Все та же проблема.
  5. Деинсталлированный VS SP1 с доступом к установочному носителю VS Ultimate, и я получил только одну ошибку, когда ему потребовались некоторые вещи VS Express, я нажал «Отмена» на этом и сказал, что деинсталляция не удалась.
  6. Запустил Visual Studio и проблема исчезла! Аллилуйя!

Ну, я вообще не виню МС в этом. Я знал, что это бета-версия, но у меня никогда не было подобных проблем.

Надеюсь, что это решит проблему для кого-то еще.

0
ответ дан 28 November 2019 в 06:53
поделиться

Ответ, который дал Рагге, сработал и для нас. У меня было решение, которое я не открывал после установки SP1, которое просто отказывалось строить с той же ошибкой. Отредактировал файл проекта в Блокноте, чтобы включить эти два утверждения и альт! проблема решена. Большое спасибо за ваше усердие!

Добавление: коллега упомянул, что добавление импорта приведет к тому, что сборки, происходящие за пределами Visual Studio, будут с большой вероятностью жаловаться (командная строка msbuild, сервер сборки), поскольку Microsoft.WebApplication.targets не там не существует Поэтому мы изменили строку импорта следующим образом:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="$(BuildingInsideVisualStudio) == true AND exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets')" />

Эти условия были важны для наших сборок, так как мы выполняем все развертывания с использованием сервера сборки и msdeploy.

0
ответ дан 28 November 2019 в 06:53
поделиться

Разверните проект, отредактируйте и добавьте следующий код в файл проекта в конце <Import>

<Target Name="_CopyBinDeployableAssemblies" 
        Condition="Exists('$(MSBuildProjectDirectory)\_bin_deployableAssemblies')">
    <CreateItem Include="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\**\*.*" 
            Condition="Exists('$(MSBuildProjectDirectory)\_bin_deployableAssemblies')" 
            Exclude="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\.svn\**\*">
        <Output ItemName="_binDeployableAssemblies" TaskParameter="Include" />
    </CreateItem>
    <Copy SourceFiles="@(_binDeployableAssemblies)" 
            DestinationFolder="$(OutDir)\%(RecursiveDir)" SkipUnchangedFiles="true" 
            Retries="$(CopyRetryCount)" 
            RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
</Target> 
.
0
ответ дан 28 November 2019 в 06:53
поделиться
Другие вопросы по тегам:

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