Как я компилирую ASP.NET проект MVC использование MSBuild? Мы используем Непрерывный Сервер интеграции, чтобы скомпилировать и развернуть наши приложения. Для хранения вещей простыми, я создал проект MVC 1.0 в VS2008. Я сразу создал файл сценария MSBuild для компиляции его. Я не изменил кода в проекте. Сценарий MSBuild содержал следующую цель.
<AspNetCompiler VirtualPath="/" PhysicalPath="C:\Development\mvc1\" TargetPath="c:\publish\xxx" Force="true" Debug="false" Updateable="true"
Проект MVC sln файл содержится в c:\development\mvc1\ directory. Я выполняю XP/Pro.
Я получаю ошибку ASPCONFIG: это - ошибка использовать раздел, зарегистрированный в качестве allowDefintion ='MachineToApplication' вне прикладного уровня.. Я удалил authenication режим, поставщика членства, и т.д. из веб-файла конфигурации, пока я наконец не видел другое сообщение об ошибке. Я теперь получаю сообщение об ошибке, говоря, что файл '/views/shared/site.master' не существует.
Что продолжается? Заранее спасибо за Вашу справку!
Я использую неправильную команду MSBuild?
Из того, что я видел, следующее верно для Firefox и Chrome;
1) Если страница HTML открыта с удаленного узла, то файл ://
ссылки не будут работать, т.е. адресная строка читается http ://someserver.domain
, а страница содержит ссылку, например < a href = "file:///S :/sharedfile.txt ">
2) Если на локальном хосте открыта HTML-страница, то файл://
ссылки будут работать, т. е. адресная строка читает файл ://C :/mydir/index.html
, а страница содержит ссылку, например < a href = «file ://S :/sharedfile.txt» >
Для Internet Explorer пункта 1) не имеет значения true. Доступ к файлу на локальном хосте можно получить с помощью синтаксиса ссылки file ://
с веб-страницы на удаленном хосте. Это считается недостатком безопасности в IE (Кем? Ссылки?) (и это тоже есть в IE8), потому что удаленный хост может получить доступ к файлам на вашем локальном компьютере без вашего ведома .... Надо признать, что им повезло с именем файла, но там много часто именованных файлов, которые могут содержать личную/личную информацию.
Правильный способ представления коллекции из нескольких выбранных параметров - использование массива путем именования тэга SELECT суффиксом [].
Проблема в том, что он неправильно обрабатывается методом jQuery serialize ().
Для такого SELECT infact:
<select name="a[]"> <option value="five">5</option> <option value="six">6</option> <option value="seven">7</option> </select>
serialize отправляет этот массив: a [] = 0 & a [] = 1 & a [] = 2 получен PHP таким образом:
[a] => Array ( [0] => 0 [1] => 1 [2] => 2 )
, где реальные значения теряются.
- У 121---4749311-, Если вы собираете свой sln-файл (msbuild mysolution.sln) или
<MSBuild Projects="msbuild mysolution.sln" Targets="Rebuild" ContinueOnError="false"
StopOnFirstFailure="false" /><!-- -d -errorstack -->
и sln-файл, есть .csproj-файл MVC-проекта ASP.NET тогда, у .csproj-файла действительно есть все, в чем вы нуждаетесь. Откройте файл .csproj с блокнотом и найдите:
1) Это должно быть верно:
<MvcBuildViews>false</MvcBuildViews>
2) Target Name = «AfterBuildCompiler»:
<Target Name="AfterBuildCompiler" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="SomeVirtualDir" PhysicalPath="C:\Development\mvc1\" TargetPath="c:\publish\xxx\" />
</Target>
Я больше ничего не делал и это сработало. На самом деле, я сделал свою конфигурацию так, что только release build развернуть приложение (путем перемещения MvcBuildView-свойство в PropertyGroups. Тогда я могу использовать тот же самый .csproj в разработке (отладка) и развертывании (выпуск).
Самым простым способом, который я нашел, было добавить проект WebDeployment в ваше решение. http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=0aa30ae8-c73b-4bdd-bb1b-fe697256c459&displaylang=en
Вы устанавливаете свойства для сборки в проекте WebDeployment (например, прекомпиляции ) . Buildserver собирает wdprj.
В моем окружении я должен начать со сборки web. После этого я могу запустить wdprj.
Вот мой nant - скрипт. Должно быть легко написать то же самое в msbuild. На самом деле он работает в TeamCity.
xml version="1.0"?>
<project name="GreatProjectWeb"
default="build" basedir="."
xmlns="http://nant.sf.net/release/0.85/nant.xsd">
<description>Build Script</description>
<!-- builds only the csproj, not the entire solution-->
<target name="build" description="Compile the project using Debug configuration for more verbose error descriptions">
<echo message="Building..."> </echo>
<exec program="C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe" >
<arg value="GreatProjectWeb\GreatProjectWeb.csproj" />
<arg value="/t:Build" />
<arg value="/p:Configuration=Release" />
</exec>
<echo message="Building Projektfile finished. Starting WDP Project..."> </echo>
<exec program="C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe" >
<arg value="GreatProjectWeb_Build\GreatProjectWeb_Build.wdproj" />
<arg value="/t:Build" />
<arg value="/p:Configuration=Release" />
</exec>
<exec program="7z" >
<arg value="a" />
<arg value="GreatProjectWeb_Deploy\web_GreatProject.zip" />
<arg value="GreatProjectWeb_Deploy\*" />
</exec>
</target>
</project>
Вы можете использовать NAnt, в котором есть задача "msbuild", которая сделает это за Вас. NAnt - это отличный способ для создания КИ.
NAnt домашняя страница Главная страница NAnt Contrib. Ссылка на задачу MSBuild из NAnt Contrib
...библиотеки, предоставляющей материалы, добавляет некоторую большую функциональность, которой нет в ванильном NAnt. Она очень проста. Я включил сюда фрагмент моего .build файла, чтобы вы могли увидеть, как я его использовал:
<property name="DeployDestination" value="\\MyTestServerName\DestinationFolder"/>
<property name="Solution.Configuration" value="Debug" overwrite="True" />
<property name="nant.settings.currentframework" value="net-3.5" />
<if test="${WebContentDestination=='Production'}">
<property name="DeployDestination" value="\\MyProductionServer\DestinationFolder"/>
</if>
...<snip>
<target name="Build">
<msbuild project="SolutionFileName.sln">
<arg value="/p:Configuration=${Solution.Configuration}" />
</msbuild>
</target>
<target name="Deploy">
<copy todir="${DeployDestination}" flatten="true" >
<fileset>All files to copy</fileset>
</copy>
</target>