Я могу автоматически увеличить версию сборки файла при использовании Visual Studio?

** Предупреждение: подход, описанный в этом ответе, применим только к очень конкретным сценариям и не является безопасным, поскольку атаки SQL-инъекции не только полагаются на возможность вставлять X=Y. **

Если злоумышленники пытаются взломать форму с помощью переменной PHP $_GET или с помощью строки запроса URL, вы сможете поймать их, если они не защищены.

RewriteCond %{QUERY_STRING} ([0-9]+)=([0-9]+)
RewriteRule ^(.*) ^/track.php

Поскольку 1=1, 2=2, 1=2, 2=1, 1+1=2 и т. д. ... являются распространенными вопросами к базе данных SQL злоумышленника. Возможно, он также используется многими хакерскими приложениями.

Но вы должны быть осторожны, чтобы не переписывать безопасный запрос с вашего сайта. Вышеупомянутый код дает вам возможность переписать или перенаправить (зависит от вас) эту динамическую строку запроса, зависящую от хакерства, на страницу, в которой будет храниться IP-адрес злоумышленника или EVEN THEIR COOKIES, история , браузера или любой другой конфиденциальной информации, поэтому вы можете иметь дело с ними позже, запретив их учетную запись или контактные органы.

347
задан pb2q 25 September 2012 в 10:07
поделиться

12 ответов

В Visual Studio 2008, следующие работы.

Находят файл AssemblyInfo.cs и находят эти 2 строки:

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

Вы могли попытаться изменить это на:

[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.0.*")]

, Но это не даст Вам желаемый результат, Вы закончите с Версией продукта 1.0.* и Версия файла [1 110] 1.0.0.0 . Не, что Вы хотите!

Однако, если Вы удаляете вторую из этих строк и просто имеете:

[assembly: AssemblyVersion("1.0.*")]

Тогда компилятор установит Версию файла, чтобы быть равным Версии продукта, и Вы получите свой желаемый результат автоматически инкрементного продукта и версии файла, которые находятся в синхронизации. Например, 1.0.3266.92689

423
ответ дан Sam Meldrum 23 November 2019 в 00:28
поделиться

Каждый раз я делаю сборку это автоинкременты младшая значащая цифра.

у меня нет идеи, как обновить другие, но уже необходимо, по крайней мере, видеть это...

0
ответ дан Brian Knoblauch 23 November 2019 в 00:28
поделиться

Перейдите к Проекту | Свойства и затем информация о блоке и затем Версия блока и поместите * в последнее или предпоследнее поле (Вы не можете автоинкремент Главные или Незначительные компоненты).

3
ответ дан MusiGenesis 23 November 2019 в 00:28
поделиться

Используйте задачу AssemblyInfo от Задач Сообщества MSBuild ( http://msbuildtasks.tigris.org/ ) проект и интегрируйте его в Ваш .csproj/.vbproj файл.

Это имеет много опций, включая одну для связи номера версии с датой и временем дня.

Рекомендуемый.

2
ответ дан devstuff 23 November 2019 в 00:28
поделиться

С прямо сейчас, для моего приложения,

string ver = Application.ProductVersion;

возвраты ver = 1.0.3251.27860

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

(я - индивидуальный отдел, поддерживающий небольшую компанию. Этот подход не может работать на Вас.)

2
ответ дан Deanna 23 November 2019 в 00:28
поделиться

Это находится в Ваших свойствах проекта под , Публикуют

http://screencast.com/t/Vj7rhqJO
(~ http://screencast.com/t/Vj7rhqJO )

4
ответ дан Community 23 November 2019 в 00:28
поделиться

Установка a * в номере версии в AssemblyInfo или под свойствами проекта, как описано в других сообщениях не работает со всеми версиями Visual Studio/.NET.

Afaik это не работало в VS 2005 (но в VS 2003 и VS 2008). Для VS 2005 Вы могли использовать следующее: Автоматическая Инкрементная сборка версии Visual Studio 2005 года и число пересмотра на времени компиляции .

, Но знать, что изменение номера версии автоматически не рекомендуется для сборок со строгим именем. Причина состоит в том, что все ссылки на такой блок должны быть обновлены каждый раз, когда блок, на который ссылаются, восстановлен вследствие того, что ссылки сборки со строгим именем всегда являются ссылкой на определенную версию блока. Microsoft самостоятельно изменяет номер версии блоков Платформы.NET, только если существуют изменения в интерфейсах. (NB: я все еще ищу ссылку в MSDN, где я считал это.)

8
ответ дан Dirk Vollmar 23 November 2019 в 00:28
поделиться

Установите номер версии на "1.0.*" и это автоматически заполнит последние два числа с датой (в днях от некоторой точки) и время (половина секунд с полуночи)

5
ответ дан James Curran 23 November 2019 в 00:28
поделиться

Чтобы заставить попытку номеров версий

 System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
 System.Reflection.AssemblyName assemblyName = assembly.GetName();
 Version version = assemblyName.Version;

устанавливать номер версии, создавайте/редактируйте AssemblyInfo.cs

 [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyFileVersion("1.0.*")]

Также как примечание стороны, третье число является количеством дней с 01.02.2000, и четвертое число является половиной суммы общих секунд в день. Таким образом, если Вы компилируете в полночь, это должен быть нуль.

12
ответ дан Developer 23 November 2019 в 00:28
поделиться

откройте файл AssemblyInfo.cs и изменение

// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

к

[assembly: AssemblyVersion("1.0.*")]
//[assembly: AssemblyFileVersion("1.0.0.0")]

, можно сделать это в IDE путем попытки проектировать-> свойства-> информация о блоке

, Это однако только позволит Вам автоматическому инкременту версию блока и даст Вам

Версия файла блока: подстановочный знак (" * ") не позволяется в этом полевом

окне сообщения при попытке места * в поле версии файла.

Поэтому просто открывают assemblyinfo.cs и делают это вручную.

153
ответ дан abatishchev 23 November 2019 в 00:28
поделиться

Установите надстройку версии сборки . Это дает вам больше контроля, чем опция *.

16
ответ дан 23 November 2019 в 00:28
поделиться

Другим вариантом изменения номеров версий в каждой сборке является использование задачи задача MSBUILD.COMMUNTITY.Tasks . Просто скачайте их установщик, установите его, затем адаптеруйте следующий код и вставьте его после в вашем .Csproj . ] Файл:

<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
<Target Name="BeforeBuild">
    <Version VersionFile="Properties\version.txt" Major="1" Minor="0" BuildType="Automatic" StartDate="12/31/2009" RevisionType="BuildIncrement">
      <Output TaskParameter="Major" PropertyName="Major" />
      <Output TaskParameter="Minor" PropertyName="Minor" />
      <Output TaskParameter="Build" PropertyName="Build" />
      <Output TaskParameter="Revision" PropertyName="Revision" />
    </Version>
    <AssemblyInfo CodeLanguage="CS"
                  OutputFile="Properties\VersionInfo.cs"
                  AssemblyVersion="$(Major).$(Minor)"
                  AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)" />
</Target>

Примечание: Адаптируйте свойство StartDate в свой локаль. В настоящее время он не использует инвариантную культуру.

Для третьей сборки 14 января 2010 года это создает версию ISPO.CS с этим содержимым:

[assembly: AssemblyVersion("1.0")]
[assembly: AssemblyFileVersion("1.0.14.2")]

Этот файл, затем должен быть добавлен в проект (через добавить существующий элемент ), а также сознание и и линии сборки , должны быть удалены из assumbo.cs .

Различные алгоритмы изменения компонентов версии описаны в $ (MSBUILDCOMSIONSPATH) \ MSBUILDCOMMUNTYTASKS \ MSBUILDCOMMMUNTITY.Tasks.Chm и свойств версии .

53
ответ дан 23 November 2019 в 00:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: