Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

​Конфигурация проекта по условию?

304  1 2 все
Murr патриот30.11.17 10:41
Murr
NEW 30.11.17 10:41 

Конфигурация проекта по условию?


Обычный проект. Заданы управляющие константы < DefineConstants > DEBUG;TRACE;v10x64 < /DefineConstants >

В шарповом коде все просто:

#if conatant

... код

#endif


вопросик - как сделать что-то аналогичное в проекте?

т.е. как вычленить константу из списка констант или проверить ее вхождение в список?


#1 
AlexNek патриот30.11.17 22:50
AlexNek
30.11.17 22:50 
в ответ Murr 30.11.17 10:41

Зачем?

Усе делается автоматом

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
#2 
Murr патриот01.12.17 00:10
Murr
NEW 01.12.17 00:10 
в ответ AlexNek 30.11.17 22:50

Усе делается автоматом

-----

Ты строку выше видишь?

Мне надо вычислить Condition=" '$(???)' == 'v10x64' "


Зачем?

-----

Затем, что есть Oracle.DataAccess.dll i Oracle.ManagetDataAccess.dll

Причем в версиях от 8.0 до 12.0 и х32 и х64 подеерживать все врапперы мне надоело - хочу сократить количество...

#3 
AlexNek патриот01.12.17 00:32
AlexNek
NEW 01.12.17 00:32 
в ответ Murr 01.12.17 00:10

ДЛЛ-ки низзя включить по условию.

#4 
Murr патриот01.12.17 00:42
Murr
NEW 01.12.17 00:42 
в ответ AlexNek 01.12.17 00:32

ДЛЛ-ки низзя включить по условию.

-----

Кто такое сказал?

Я вот заменил ссылки на проекты при билде Студиеj на ссылки на ДЛЛки при ССНет-билде и ничего - все пашет как должно...


П.С. Я не об том что этого нельзя сделать Студией...

#5 
Программист коренной житель01.12.17 10:22
NEW 01.12.17 10:22 
в ответ Murr 01.12.17 00:10

Не совсем понял, чего ты хочешь добиться?

#6 
Murr патриот01.12.17 12:34
Murr
NEW 01.12.17 12:34 
в ответ Программист 01.12.17 10:22

чего ты хочешь добиться?

-----

Билда, зависящего от констант заданных в "Conditional compilation symbol" проекта.

Эти константы как раз пишутся списком в указанном элементе.

#7 
Murr патриот01.12.17 13:04
Murr
NEW 01.12.17 13:04 
в ответ Murr 01.12.17 12:34

Только что нашел убойную фигню в мелкомягковских проектах...


Имеем Проект со ссылками на другие Проекты.

Для тестирования Я решил строить по ОДНОМУ проекту за раз.

По одному означает что будет строится только один Проект - все остальные должны быть уже откомпилированы и представлены в виде дллок.


Системка получилась не самая простая, но результатами Я был доволен - все работало именно так как мне хотелось.


По случаю - ошибся с путями к готовым дллкам. НО! Все продолжало функционировать!!!


Все, кроме одного проекта. В нем имя сборки не совпадало с именем проекта и никак не ресолвилось.

Т.е. если есть проект вид:


<?xml version="1.0" encoding="utf-8"?>
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{E92D6467-35A4-4BAC-804F-1599D7E050FF}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Olympic.Misk.Tests</RootNamespace>
<AssemblyName>Olympic.Misk.Tests</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
<IsCodedUITest>False</IsCodedUITest>
<TestProjectType>UnitTest</TestProjectType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Bin\$(Configuration)\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Tests|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Bin\$(Configuration)\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Bin\$(Configuration)\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.XML" />
</ItemGroup>
<Choose>
<When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'">
<ItemGroup>
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework" />
</ItemGroup>
</Otherwise>
</Choose>


<ItemGroup>
<None Include="Properties\App.config" />
</ItemGroup>

<Choose>
<When Condition=" '$(CCNetBuildId)' == '' ">
<ItemGroup>

[red] <ProjectReference Include="..\Olympic.Misk\Olympic.Misk.csproj"> [/red]

<Project>{cd9513ad-87a5-447c-8a82-a5282d048ffe}</Project>
<Name>Olympic.Misk</Name>
</ProjectReference>
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<Reference Include="Olympic.Misk">
<SpecificVersion>False</SpecificVersion>

[red] <HintPath>..\..\Bin\$(Configuration)\Olympic.Misk.dll</HintPath> [/red]

<Private>False</Private>
</Reference>
</ItemGroup>
</Otherwise>
</Choose>

<Choose>
<When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">
<ItemGroup>
<Reference Include="Microsoft.VisualStudio.QualityTools.CodedUITestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestTools.UITest.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestTools.UITest.Extension, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestTools.UITesting, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
</ItemGroup>
</When>
</Choose>
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>


Где в варианте с '$(CCNetBuildId)' != '' собрка лежала в другом месте, проект все одно строился.

Т.е. при отсутствии конкретно указанной сборки - выбирается та, которая лежит в obj неактивного Проекта...

Писсец полный - билли напрочь игнорит условия билda...

#8 
AlexNek патриот01.12.17 22:29
AlexNek
NEW 01.12.17 22:29 
в ответ Murr 01.12.17 13:04

Что то не понял эту строку - Microsoft.VisualStudio.QualityTools.CodedUITestFramework

Coded UI Test - вроде же только для Visual Studio Enterprise или это что то другое?

#9 
Murr патриот02.12.17 09:49
Murr
NEW 02.12.17 09:49 
в ответ AlexNek 01.12.17 22:29

У меня "лицензионная" Студия 2010 Ент - эти либы не менялись и не требуют регистрации - просто скопировал. спок

#10 
AlexNek патриот02.12.17 15:31
AlexNek
NEW 02.12.17 15:31 
в ответ Murr 02.12.17 09:49

помню кричал коммунити, коммунити - ну да ладно, молодцы что купили тебе.

Я как то давно пробовал GUI test,что то не пошло.

Ты винформс попробовать можешь? Я тогда скажу своим - пусть покупают.

#11 
Murr патриот02.12.17 16:30
Murr
NEW 02.12.17 16:30 
в ответ AlexNek 02.12.17 15:31

Мне ничего не покупали.

2010 - из МСДН со старой работы.


Я не пробовал тестить ГУЙ. Здесь как-то спрашивал, но...

Если есть где сколь-нибудь толковое описание для веб-гуя-теста - Я бы попробовал... но не в ближайшее время...

#12 
Murr патриот04.12.17 11:00
Murr
NEW 04.12.17 11:00 
в ответ Murr 30.11.17 10:41

Вроде нашлось решение... по крайней мере СтакОверфлов говорит об такой возможности:

Condition="$(DefineConstants.Contains('v10x64'))

https://stackoverflow.com/questions/28387596/how-to-condit...

#13 
AlexNek патриот04.12.17 23:51
AlexNek
NEW 04.12.17 23:51 
в ответ Murr 04.12.17 11:00

хм, но всё руками писать как то совсем не хочется.

#14 
Murr патриот05.12.17 00:41
Murr
NEW 05.12.17 00:41 
в ответ AlexNek 04.12.17 23:51

Хммм... руками... конфиги для ССНЕТ Я таки не пишу руками - генерируются онi...

Ну а Проекты - можно и руками поправить - там практически копи-пасте... и поддается автоматизации.


Сегодня, правда, замаялся - подчистил чуток некоторые Проекты и... все сдохло.

Еле разобрался что сам у себя пользовал те части, которые "оптимизировал"... и переместил.

Ну а перемещения - в коде не ожидал, но написал аккуратно - отработало без сбоев - а на выходе - пусто...


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

#15 
AlexNek патриот05.12.17 00:54
AlexNek
NEW 05.12.17 00:54 
в ответ Murr 05.12.17 00:41

Не проекты править руками - енто не для нас...

Ты случаем с ДБ2 не сталкивался? Задолбала уже совсем - гигабайты Ява, а в итоге нужно пользовать штук 50 консольных утилит.

Версия для разработчика на виртуалку не ставится в принципе. После часа установки вылетает в лучшем случае по ошибке, в худшем просто грит ждите.

А при старте уже "установленной" проги, прога грит что данная ОС не поддерживается. А ты на Билли катишь - MS SQL установил и сразу все работает.


#16 
Murr патриот05.12.17 07:53
Murr
NEW 05.12.17 07:53 
в ответ AlexNek 05.12.17 00:54

установил и сразу все работает

------

Гхммм...

Времена Ms Sql 7.

Писюк с 6-8 осями без виртуализации - C,D,E,F,G,H...

На каждой - Ms Sql 7 в своей конфигурации и со своими заморочками...

Активная система на на Е: и ставится очетердной СП.

Встает - без проблем.

Перезагружаешься - никакого СП не инсталлировано...

Загружаешься с С: - ойййй... все настроенное - покорежено...

#17 
AlexNek патриот05.12.17 21:45
AlexNek
NEW 05.12.17 21:45 
в ответ Murr 05.12.17 07:53
Активная система на Е: и ставится очередной СП.

А причем тут Ms Sql?


Получил первое соединение по ОДБС.

Сколько всего проблем у ИБМ.... На форуме ошибка датирована 2012 годом, до сих пор не исправлено.

В последнем пакете для загрузки аддон для 2013 студии, хотя для 2015 тоже сделано. Что для 2017 непонятно.

Загрузил гигов 5 из десятка разных ссылок провел фиг знает сколько экспериментов, пока что то получил.


Что то мне хронически не везет с Явой прогами. Как что надо пользовать - обязательно монстр с ошибками.

#18 
Murr патриот05.12.17 23:01
Murr
NEW 05.12.17 23:01 
в ответ AlexNek 05.12.17 21:45

А причем тут Ms Sql?

-----

Ты вроде об нем говорил? Ну так СП - его...


Получил первое соединение по ОДБС.

-----

Времена С++Буилдер 5.0.

Все написано, инсталировано, проверено и работает.

Ставится какая-то мелочевка и... все потухло...

МДАК... поменялся... даже версия осталась та же... но - не работает...



Что то мне хронически не везет с Явой прогами.

-----

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

#19 
AlexNek патриот06.12.17 00:01
AlexNek
NEW 06.12.17 00:01 
в ответ Murr 05.12.17 23:01

Если сервис пак гробит систему так это проблемы сервис пака.

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

Этож надо тоже додуматься - делать версию для разработчиков которая в принципе не будет работать на виртуалке.

#20 
1 2 все