2014-11-23 2 views
3

У меня есть ASP.NET WebForms проекта Сайт (обратите внимание, что это НЕ WebApplication проекта, т.е. нет .csproj).ASP.NET веб-сайт проекта автоматического развертывания с TFS 2013 сборки

Я хочу сделать автоматическое развертывание файловой системы для нашей общей сети.

Я создал профиль, и поэтому есть файл website.publishproj и профиль xml.

Я попробовал, добавив это в качестве аргументов MSBuild в сборки Определение:

website.publishproj /p:DeployOnBuild=true /p:PublishProfile=MyDevProfile /p:VisualStudioVersion=12.0

Я получаю эту ошибку:

MSBUILD : error MSB1008: Only one project can be specified. Switch: website.publishproj

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

Это то, что я прочитал: How to use command line msbuild to deploy VS2012 Web Site project without precompiling it?

Вот команда:

C:\Program Files (x86)\MSBuild\12.0\bin\amd64\MSBuild.exe /nologo /noconsolelogger "E:\Builds\1\TP1\MyWebsite_Dev\src\Websites\MyWebsite\MyWebsite.sln" /nr:False /fl /flp:"logfile=E:\Builds\1\TP1\MyWebsite_Dev\src\Websites\MyWebsite\MyWebsite.log;encoding=Unicode;verbosity=normal" /p:SkipInvalidConfigurations=true website.publishproj /p:DeployOnBuild=true /p:PublishProfile=DropToDemoProfile /p:VisualStudioVersion=12.0 /m /p:OutDir="E:\Builds\1\TP1\MyWebsite_Dev\bin\" /p:VCBuildOverride="E:\Builds\1\TP1\MyWebsite_Dev\src\Websites\MyWebsite\MyWebsite.sln.vsprops" /dl:WorkflowCentralLogger,"C:\Program Files\Microsoft Team Foundation Server 12.0\Tools\Microsoft.TeamFoundation.Build.Server.Logger.dll";"Verbosity=Normal;BuildUri=vstfs:///Build/Build/35;IgnoreDuplicateProjects=False;InformationNodeId=13;TargetsNotLogged=GetNativeManifest,GetCopyToOutputDirectoryItems,GetTargetPath;LogWarnings=True;TFSUrl= http://mytfs:8080/tfs/colletionname ;"*WorkflowForwardingLogger,"C:\Program Files\Microsoft Team Foundation Server 12.0\Tools\Microsoft.TeamFoundation.Build.Server.Logger.dll";"Verbosity=Normal;" /p:BuildId="7d23530d-7349-406f-98b7-5d4f0b9f4101,vstfs:///Build/Build/35" /p:BuildLabel="MyWebsite_Dev_20141122.13" /p:BuildTimestamp="Sun, 23 Nov 2014 01:22:05 GMT" /p:BuildSourceVersion="[email protected]$/TP1" /p:BuildDefinition="MyWebsite_Dev"

ответ

2

Вы пытаетесь построить решение (MyWebsite.sln) и проект (website.publishproj) одновременно как часть той же команды MSBuild, по крайней мере, в соответствии с переданными аргументами.

Вы можете запустить msbuild website.publishproj /pp:website.pp.publishproj, чтобы узнать, какие цели вы можете позвонить в website.pp.publishproj или какие свойства переопределить.

Вы можете запустить set MSBUILDEMITSOLUTION=true && msbuild MyWebsite.sln, чтобы узнать, какие цели вы можете позвонить в MyWebsite.sln.metaproj и MyWebsite.metaproj или какие свойства переопределить.

Ваша команда DeployOnBuild хорошо и должно работать, я предполагаю, что ваш TFS строить конфигурации указывает на .sln и передавая website.publishproj в качестве аргумента, а не основной цели сборки, так как Repoint его строить .publishproj напрямую или ... ну, похоже, альтернативы нет, вы можете попробовать добавить новую конфигурацию и отредактировать .sln с новыми AspNetConfiguration и MyDevProfile.AspNetCompiler.TargetPath, но тогда вы просто просите о проблемах.

+0

Первый пара имеет смысл. Для второго и третьего пунктов я этого не понимаю. Не много делали с msbuild. 4-я Пара - я попытался добавить сайт.publishproj в список проектов сборки, но он не работал. Я не помню ошибку, но я могу попробовать снова и опубликовать сообщение. Скажем, я добавляю a.файл целей на уровне решения и хотите добавить цель после сборки, как бы выглядела команда? Могу ли я установить сценарий postbuild в TFS? Если да, то как бы выглядел этот сценарий? Благодарю. – gbs

+0

@gbs опубликовать сообщение об ошибке из 'publishproj' build. 2/3 - это команды, которые вы можете использовать для * подготавливать * publishproj и * emit * 'sln', если вы хотите прочитать, что фактически выполняется MSBuild, и посмотреть все целевые объекты, которые можно вызвать, свойства, доступные для переопределить и т. д. Да, у вас может быть собственный скрипт сборки и все целевые объекты и события, которые вы хотите, в свою очередь, создаете команды 'sln' и' publishproj', почему бы и нет, команда остается прежней, просто передайте имя файла в MSBuild или настройте TFS, чтобы построить это вместо этого. –

+0

Я попытался снова с добавлением .publishproj к процессу сборки и удалил его из аргумента build. Теперь, похоже, он пытается развернуть мой путь: \\ devserver \ www \ dropbuild \ mywebsite, но он предоставляет доступ к этому пути. Я фактически дал разрешение «Все» на эту папку, не уверен, что мне не хватает. – gbs

0

Вам необходимо обновить свой веб-сайт в веб-приложение для того, чтобы все это, чтобы быть автоматическим.

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

Функциональность веб-сайта уже более 10 лет является функцией. Хотя он все еще существует в продукте для back-compat, я бы не рекомендовал его использовать.

+0

Да, но до тех пор вы видите что-то не так в приведенной выше команде? Большинство моих выводов указывает на космос на пути, который я не мог найти. Способ построения аргументов для меня работал на одном из моих тестовых сайтов, но не на моем реальном сайте. – gbs

Смежные вопросы