Проблемы с машинопись и TFS

голоса
10

Существует, вероятно, проблема с TFS Visual Studio проекта осуществляется совместно с машинопись.

На сборке TSC не может перезаписать только для чтения .js Файловые бросками Разрешение отказано ошибка.

Error   1   Permission denied   
Error   2   The command C:\Program Files (x86)\Microsoft SDKs\TypeScript\0.8.0.0\tsc 
c:\users\schlicht\documents\visual studio 2012\Projects\TypeScriptHTMLApp1\TypeScriptHTMLApp1\app.ts exited with code 1. 

Можно без явно проверить файлы использовать сборку с TSC?

Задан 08/10/2012 в 11:30
источник пользователем
На других языках...                            


7 ответов

голоса
7

Не проверять в файле .js. Мы используем этот подход на нашей машинописи проект, и он работает хорошо. Там нет необходимости иметь сгенерированный .js в системе управления версиями; думать о файлах .js как результат проекта, как .exe или .dll.

Ответил 14/10/2012 в 02:59
источник пользователем

голоса
4

Теперь, если ваш сервер сборки настроен для машинописи бега, TSC будет работать и генерировать файлы JavaScript.

Вот еще альтернативное решение, в случае, если вы не хотите, чтобы удалить файл JS. Потому что, если вы удалите JS для поры до времени, а также любые других проверки разработчиков в этих файлах снова в TFS, та же ошибка придет произойти. (Более того те скрытые файлы, так что если вы не отметите в тщательно, они могут быть проверены в в TFS)

В этом случае, вы можете запустить событие Pre-Build, которая удалит все только для чтения атрибутов файлов JS для данного проекта.

1. Щелкните правой кнопкой мыши на проекте и открыть окно Property Project

2. Выберите Построить Event Tab

введите описание изображения здесь

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

Надеюсь это поможет.

Источник: http://dailydotnettips.com/2014/05/03/typescript-emit-error-write-to-file-failed-how-to-resolve

Ответил 28/11/2015 в 06:05
источник пользователем

голоса
1

Вот обходной путь: Для того, чтобы сохранить ваши файлы JS в рамках проекта и управления версиями.

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

Я нашел это, потому что я не показывал эту проблему, но другие в моей команде были, так что после некоторого копания я узнал, что было по-другому. Я использовал локальную рабочую область, а не рабочую область сервера.

Остальные члены команды преобразуются в локальную рабочую область, и они гладко снова.

Ответил 18/07/2013 в 11:30
источник пользователем

голоса
1

Это известная ошибка (или отсутствует функция):

http://typescript.codeplex.com/workitem/108

Ответил 08/10/2012 в 14:52
источник пользователем

голоса
0

Проблема:
При добавлении сгенерированных * .js файлов в TFS, то TFS запись защищает их, если вы проверяете их, или не проверить их. Так что если вы измените * ts - файл, то он не может генерировать * .js файл, так как файл защищен от записи.
==> Ошибка
Но если вы не проверить их, * .js файл будет отсутствовать , если вы запустите развертывание.
==> Собирает, но Ошибка выполнения
Кроме того , если вам это нужно , как внедренный ресурс, вы не можете исключить файл ...

Дополнительная проблема 1:
При запуске «Rebuild Solution», Visual Studio хочет удалить * .js файлы , созданные машинопись, перед выполнением сборки.
Но удаление не представляется возможным, так как * .js файлы защищены от записи ...
==> Ошибка

Дополнительная проблема 2:
Так как чистый не является «Build», предварительно построить события, не выполняется на чистом ...
Так что если вы удалите защиту от записи на предварительной сборке, это будет работать , если вы «построить», но это потерпит неудачу , если вы выбираете «Перестройка», независимо от того, делаете ли вы его в растворе или в проекте.

Дополнительная проблема 3:
Вы не можете определить команду предварительной очистки событий в редакторе проекта Настройки.

Итак, вот что вы можете сделать:
Run attrib -r /s(снимает защиту от записи) на ваш typescripted * .js файлы в качестве предварительной сборки действия.
например

attrib -r /s "$(ProjectDir)Resources/Scripts/0/*.js"

Это работает, потому что * расширен:

  • Если файл не существует, нет никакой ошибки, потому что ни одна команда не будет выполнена.
  • Если файл не существует, нет никакой ошибки, то команда выполняется.

Если вы хотите запустить его на имя файла, он потерпит неудачу, если файл не существует.

Теперь вам нужно отредактировать файл проекта (* .csproj) вручную, добавить предварительно чистую акцию.
Предварительно чистые действия такой же , как действие предварительной сборки.

  <Target Name="BeforeClean">
    <!-- DO YOUR STUFF HERE -->
    <Exec Command="attrib -r /s &quot;$(ProjectDir)Resources/Scripts/0/*.js&quot;" />
  </Target>

И там вы идете. Теперь вы можете проверить * .js файлы, может редактировать * ts-файл (вам нужно незащитил * .js файл или запустить сборку впоследствии)

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

if EXIST "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js" (
attrib -r "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"
)

или в XML-форме:

<Exec Command="if EXIST &quot;$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js&quot; (&#xD;&#xA;attrib -r &quot;$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js&quot;&#xD;&#xA;)" />

И вместо того, чтобы извлекать только для чтения атрибутов оптом в действии до сборки, вы также можете проверить отдельные файлы с помощью инструмента TFS командной строки:
"$(DevEnvDir)CommonExtensions/Microsoft/TeamFoundation/Team Explorer/tf.exe" checkout /lock:none "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"

Кстати, вы можете найти список VisualStudio / MSBuild макросов здесь:
https://docs.microsoft.com/en-us/cpp/ide/common-macros-for-build-commands-and-properties?view= VS-2017

А чтобы узнать фактическое значение макроса:

  • щелкните правой кнопкой мыши на проект в обозревателе решений, выберите Свойства
  • выберите Событие построения вкладки
  • нажмите Edit предварительной сборки или Edit после сборки кнопки, либо в порядке
  • в всплывающем окне, нажмите Макросы кнопку
  • прокрутите список вниз , пока вы найдете ProjectDirв следующей панелью является его фактическим значением

Кроме того, вместо того, чтобы использовать событие предварительно сборки в проекте, вы можете добавить проверку как BeforeBuild-целевой команды. Таким образом, никто не может accidentially удалить его, если они положить что-то в предварительную сборку в проекте-настройке.

  <Target Name="BeforeBuild">
    <Exec Command="&quot;$(DevEnvDir)CommonExtensions/Microsoft/TeamFoundation/Team Explorer/tf.exe&quot; checkout /lock:none &quot;$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js&quot;" />
  </Target>
Ответил 06/02/2019 в 13:09
источник пользователем

голоса
0

В ответ на людей, предлагая исключение .js файлов из проекта, я должен сказать, что это может работать только в малых и одного программного решения. В большом приложении т.е. ПОР обычно существует несколько решений, каждый модуль, и, когда у каждого есть файлы .js для себя, поставляя .js и другие исходные файлы этого типа, как правило, делая их «внедренных ресурсов» и некоторые пользовательские виртуальный провайдер путь или что-то.

Итак, что работает? Это решение может помочь вам, я предлагаю вам попробовать.

Но в любом случае, как уже упоминалось AM. это известная ошибка. И я думаю, что лучшее решение для машинописи компилятора будет пропустить запись, .js файлы для тех .ts файлов, которые доступны только для чтения (зарегистрированном) сами.

Ответил 06/07/2015 в 06:14
источник пользователем

голоса
0

Я испытал это вчера.

Как указан iano, не добавляйте сгенерированный .js в TFS; или добавить tf checkoutи tf checkinк цели BeforeBuild.

Ответил 20/11/2012 в 13:43
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more