Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
SVN редакция версии в .NET Assembly w/ из CC.NET
Есть ли какой-либо способ включить номер редакции репозитория SVN в строку версии A .NET assembly? Что-то вроде Major.Minor.SVNRev
Я видел упоминание о том, чтобы сделать это с чем-то вроде CC.NET (хотя на самом деле на ASP.NET), но есть ли способ сделать это без дополнительного программного обеспечения? Я делал подобные вещи в C/C++ перед использованием пакетных сценариев сборки, но это было сделано путем чтения номера версии, а затем сценарий выписывал файл под названием " ver.h " каждый раз с чем-то вроде:
#define MAJORVER 4
#define MINORVER 23
#define SOURCEVER 965
Затем мы будем использовать эти определения для создания строки версии.
Возможно ли что-то подобное?NET?
Вот и C# пример для автоматического обновления информации о ревизии в assembly. Он основан на ответе Уилла Дина, который не очень сложен.
Пример :
- Скопируйте AssemblyInfo.cs в AssemblyInfoTemplate.cs в проекте свойства папки .
- Изменить действие при построении для AssemblyInfoTemplate.cs.
Измените строку с AssemblyFileVersion на:
[assembly: AssemblyFileVersion("1.0.0.$WCREV$")]Рассмотрите возможность добавления:
[assembly: AssemblyInformationalVersion("Build date: $WCNOW=%Y-%m-%d %H:%M:%S$; Revision date: $WCDATE=%Y-%m-%d %H:%M:%S$; Revision(s) in working copy: $WCRANGE$$WCMODS?; WARNING working copy had uncommitted modifications:$.")],который даст подробную информацию о состоянии ревизии источника, из которого был построен assembly.
Добавьте следующее событие предварительной сборки в свойства файла проекта:
subwcrev "$(SolutionDir)." "$(ProjectDir)Properties\AssemblyInfoTemplate.cs" "$(ProjectDir)Properties\AssemblyInfo.cs" -fРассмотрите возможность добавления AssemblyInfo.cs в список игнорирования svn. Подставленные номера редакций и даты изменят файл, что приведет к незначительным изменениям и ревизиям, и $WCMODS$ будет оценено как true. AssemblyInfo.cs, конечно, должно быть включено в проект.
В ответ на возражения Вима Коэнена я заметил, что, в отличие от того, что было предложено Дэррилом, AssemblyFileVersion также не поддерживает числа выше 2^16. Сборка завершится, но версия файла свойств в фактическом assembly будет равна AssemblyFileVersion по модулю 65536. Таким образом, 1.0.0.65536, а также 1.0.0.131072 дадут 1.0.0.0 и т. д. В этом примере в свойстве AssemblyInformationalVersion всегда присутствует истинный номер редакции. Вы могли бы опустить Шаг 3, если считаете это важным вопросом.
Edit: некоторые дополнительные сведения после использования этого решения в течение некоторого времени.
- Теперь он использует AssemblyInfo.cst вместо AssemblyInfoTemplate.cs, потому что у него автоматически будет опция действия сборки None , и он не будет загромождать ваш список ошибок, но вы потеряете подсветку синтаксиса.
Я добавил два теста в свои файлы AssemblyInfo.cst:
#if(!DEBUG) $WCMODS?#error Working copy has uncommitted modifications, please commit all modifications before creating a release build.:$ #endif #if(!DEBUG) $WCMIXED?#error Working copy has multiple revisions, please update to the latest revision before creating a release build.:$ #endifИспользуя это, вы обычно должны будете выполнить полное обновление SVN, после фиксации и до того, как вы сможете выполнить успешную сборку выпуска. В противном случае, $WCMIXED будет истинным. Это, по-видимому, вызвано тем фактом, что зафиксированные файлы находятся в головной редакции после фиксации, а другие файлы-нет.
- У меня были некоторые сомнения в том, что первый параметр subwcrev, "$(SolutionDir)", который задает область для проверки информации о версии svn, всегда работает так, как нужно. Возможно, это должно быть $(ProjectDir), если вы довольны, если каждый отдельный assembly находится в последовательной ревизии.
Дополнение к ответу на комментарий @tommylux.
SubWcRev можно использовать для любого файла в вашем проекте. Если вы хотите отобразить информацию о ревизии на веб-странице, вы можете использовать этот шаблон VersionInfo:
public class VersionInfo
{
public const int RevisionNumber = $WCREV$;
public const string BuildDate = "$WCNOW=%Y-%m-%d %H:%M:%S$";
public const string RevisionDate = "$WCDATE=%Y-%m-%d %H:%M:%S$";
public const string RevisionsInWorkingCopy = "$WCRANGE$";
public const bool UncommitedModification = $WCMODS?true:false$;
}
Добавьте событие предварительной сборки, такое же, как для AssemblyInfo.cst, и у вас будет легкий доступ ко всей соответствующей информации SubVersion.
Взгляните на SubWCRev - http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html
Номера версий assembly обычно находятся в assemblyinfo.cs
Прочитайте / просмотрите эти документы:
Доступ к репозиторию Subversion из .NET с помощью DotSVN
Вставьте версию SVN и номер сборки в ваш файл C# AssemblyInfo
Компиляция Приложений С Пользовательскими Задачами Для Microsoft Build Engine
MSBuildCommunityTasks svnversion, упомянутый в третьей ссылке, не будет работать с svn на Mac 10.5.6 и VS2008 C# project build внутри Parallels hosting Vista (т. е., поперек OS).
Напишите свою собственную задачу для извлечения ревизии из репозитория с помощью DotSVN:
using System;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using DotSVN.Common;
using DotSVN.Common.Entities;
using DotSVN.Common.Util;
using DotSVN.Server.RepositoryAccess;
namespace GetSVNVersion
{
public class GetRevision : Task
{
[Required]
public string Repository { get; set; }
[Output]
public string Revision { get; set; }
public override bool Execute()
{
ISVNRepository repo;
bool connected = true;
try
{
repo = SVNRepositoryFactory.Create(new SVNURL(Repository));
repo.OpenRepository();
Revision = repo.GetLatestRevision().ToString();
Log.LogCommandLine(Repository + " is revision " + Revision);
repo.CloseRepository();
}
catch(Exception e)
{
Log.LogError("Error retrieving revision number for " + Repository + ": " + e.Message);
connected = false;
}
return connected;
}
}
}
Таким образом, путь к репозиторию должен быть "file:///Y:/repo", где Y: - каталог Mac, сопоставленный с Vista.
В другом ответе упоминалось, что SVN номер редакции может быть не очень хорошей идеей из-за ограничения на размер номера.
Следующая ссылка содержит не только номер редакции SNV, но и шаблон сведений о версии даты.
Добавить это в проект .NET просто - очень мало работы нужно сделать.
Вот проект github, который решает эту проблему https://github.com/AndrewFreemantle/When-The-Version/downloads
Следующий url может загружаться медленно, но является step-by-step объяснением того, как сделать эту работу (простой и короткий 3 или 4 шага)
svn info, сообщает вам версию, на которой вы находитесь, вы можете сделать событие "pre-build" в VS на вашем проекте, чтобы сгенерировать assemblyinfo.cs, запустив svn info и проанализировав его результаты с помощью доморощенного приложения командной строки.
Я уже делал это раньше, но быстро переключился на просто передачу ccnet в качестве переменной в nant.
Если вы хотите обновить номер версии в проекте AssemblyInfo.cs, вам может быть интересна эта статья:
CodeProject: используйте номера версий Subversion в проектах Visual Studio
Если вы включаете SVN ключевых слова, то каждый раз, когда вы регистрируетесь в проекте Subversion, он сканирует ваши файлы на наличие определенного "keywords" и заменяет ключевые слова некоторой информацией.
Например, в верхней части моих исходных файлов я бы создал заголовок, содержащий следующие ключевые слова:
'$Автор:$
'$Идентификатор:$
'$Оборот:$Когда я проверяю этот файл в Subversion эти ключевые слова заменяются следующими:
Автор: полбеттеридж $
'$Id: myfile.vb 145 2008-07-16 15:24:29Z полбеттеридж $
'$Rev: 145 $
Вы можете использовать общий файл версии Assembly, на который можно ссылаться во всех ваших проектах.
UppercuT делает это - http://ferventcoder.com/archive/2009/05/21/uppercut---automated-builds---versionbuilder.aspx
Это даст вам представление о том, что вы можете сделать, чтобы получить версии в ваших сборках.