Вы можете использовать javascript
и скрытый ввод с php
и отправить форму, используя имя ввода
<script>
document.querySelector("input-hidden").value = document.querySelector("phone").innerHTML;
</script>
Что относительно того, чтобы использовать общий AssemblyInfo через Ваши проекты?
Это - то, что мы делаем для наших продуктов:
Каждый проект имеет свой собственный AssemblyInfo.cs - это содержит AssemblyTitle, AssemblyDescription, Гуид и другие атрибуты, которые уникальны для того блока.
Каждый проект также имеет два других Информационных файла блока, обратите внимание, что они добавляются как ссылка, а не файл прямого доступа (VS-> Добавляют->, Существующий Файл-> Добавляет как ссылка (мало стрелки вниз рядом с добавляют)),
Эти два файла связей:
CompanyAssemblyInfo.cs - AssemblyCompany, AssemblyCopyright, AssemblyConfiguration, CLSCompliant, SecurityPermission, и т.д. В основном все мы хотим стандарт на всех наших блоках.
ProductAssemblyInfo.cs - AssemblyProduct, AssemblyVersion, AssemblyFileVersion. Это позволяет нам продвигать ту же версию через ко всем блокам из одного файла.
Наш процесс CI и выпуска более сложен, но это в основе его - единственная точка (файл), который управляет версией продукта (блоки, установщики, все!)
Существует задача сделать, о чем Вы спрашиваете.
Необходимо будет установить задачи MSBuildCommunity, найденные здесь.
Затем можно создать что-то вроде этого:
<PropertyGroup>
<MyAssemblyVersion>$(CCNetLabel)</MyAssemblyVersion>
</PropertyGroup>
<Target Name="GenAssemblyInfo">
<AssemblyInfo
ContinueOnError="false"
CodeLanguage="CS"
OutputFile="$(MSBuildProjectDirectory)\YourAssembly\AssemblyInfo.cs"
AssemblyTitle="blah"
AssemblyDescription="blah blah"
AssemblyCompany="Anj Software, Inc."
AssemblyProduct="Anj's Awesome App"
AssemblyCopyright="blah blah"
CLSCompliant="false"
AssemblyVersion="$(MyAssemblyVersion)"
AssemblyFileVersion="$(MyAssemblyVersion)"
/>
</Target>
Обратите внимание, что можно установить префикс номера сборки в ccnet.config файле так, чтобы блоки были пронумерованы 2.1.0.x, где x является номером сборки. Это - то, как мы делаем нашу нумерацию версии, где я работаю.
Необходимо будет все еще сохранить файл AssemblyInfo.cs по умолчанию как часть каждого из проектов, которые составляют решение.
Я использую powershell для этого. lpath является путем к исходному коду, и buildnum является моим buildnumber, который я добавляю. Это - все, что я на самом деле делаю с этим. Однако это должно дать Вам достаточно, чтобы изменить или установить любые из других доступных полей. Я передаю в lpath, и я получаю buildnumber от доступных переменных среды в CC.NET, и я могу использовать этот сценарий много раз, просто изменив то, в чем я передаю командной строке в файле конфигурации. У меня также есть тот, который изменяет файлы ресурсов для Кода C++, если это на самом деле, что необходимо изменить.
$files = Get-ChildItem $lpath -recurse -filter *AssemblyInfo.cs -name
Foreach ($file in $files)
{
$file = $lpath + "\" + $file
$fileObject=get-item $file
$fileObject.Set_IsReadOnly($False)
$sr = new-object System.IO.StreamReader( $file, [System.Text.Encoding]::GetEncoding("utf-8") )
$content = $sr.ReadToEnd()
$sr.Close()
$content = [Regex]::Replace( $content, '(?<=\[assembly: AssemblyVersion\("[0-9].[0-9].[0-9].)[0-9]?[0-9]?[0-9]', $buildnum);
$content = [Regex]::Replace( $content, '(?<=\[assembly: AssemblyFileVersion\("[0-9].[0-9].[0-9].)[0-9]?[0-9]?[0-9]', $buildnum);
$sw = new-object System.IO.StreamWriter( $file, $false, [System.Text.Encoding]::GetEncoding("utf-8") )
$sw.Write( $content )
$sw.Close()
$fileObject.Set_IsReadOnly($True)
}