Конфигурация проекта по условию?
Конфигурация проекта по условию?
Обычный проект. Заданы управляющие константы < DefineConstants > DEBUG;TRACE;v10x64 < /DefineConstants >
В шарповом коде все просто:
#if conatant
... код
#endif
вопросик - как сделать что-то аналогичное в проекте?
т.е. как вычленить константу из списка констант или проверить ее вхождение в список?
Усе делается автоматом
-----
Ты строку выше видишь?
Мне надо вычислить Condition=" '$(???)' == 'v10x64' "
Зачем?
-----
Затем, что есть Oracle.DataAccess.dll i Oracle.ManagetDataAccess.dll
Причем в версиях от 8.0 до 12.0 и х32 и х64 подеерживать все врапперы мне надоело - хочу сократить количество...
Только что нашел убойную фигню в мелкомягковских проектах...
Имеем Проект со ссылками на другие Проекты.
Для тестирования Я решил строить по ОДНОМУ проекту за раз.
По одному означает что будет строится только один Проект - все остальные должны быть уже откомпилированы и представлены в виде дллок.
Системка получилась не самая простая, но результатами Я был доволен - все работало именно так как мне хотелось.
По случаю - ошибся с путями к готовым дллкам. НО! Все продолжало функционировать!!!
Все, кроме одного проекта. В нем имя сборки не совпадало с именем проекта и никак не ресолвилось.
Т.е. если есть проект вид:
<?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...
Вроде нашлось решение... по крайней мере СтакОверфлов говорит об такой возможности:
Condition="$(DefineConstants.Contains('v10x64'))
https://stackoverflow.com/questions/28387596/how-to-condit...
Хммм... руками... конфиги для ССНЕТ Я таки не пишу руками - генерируются онi...
Ну а Проекты - можно и руками поправить - там практически копи-пасте... и поддается автоматизации.
Сегодня, правда, замаялся - подчистил чуток некоторые Проекты и... все сдохло.
Еле разобрался что сам у себя пользовал те части, которые "оптимизировал"... и переместил.
Ну а перемещения - в коде не ожидал, но написал аккуратно - отработало без сбоев - а на выходе - пусто...
Найденное деление списка, кстати, оказалось не шибко нужным - надо было подставлять список констант в параметры - этого хватило...
Не проекты править руками - енто не для нас...
Ты случаем с ДБ2 не сталкивался? Задолбала уже совсем - гигабайты Ява, а в итоге нужно пользовать штук 50 консольных утилит.
Версия для разработчика на виртуалку не ставится в принципе. После часа установки вылетает в лучшем случае по ошибке, в худшем просто грит ждите.
А при старте уже "установленной" проги, прога грит что данная ОС не поддерживается. А ты на Билли катишь - MS SQL установил и сразу все работает.
установил и сразу все работает
------
Гхммм...
Времена Ms Sql 7.
Писюк с 6-8 осями без виртуализации - C,D,E,F,G,H...
На каждой - Ms Sql 7 в своей конфигурации и со своими заморочками...
Активная система на на Е: и ставится очетердной СП.
Встает - без проблем.
Перезагружаешься - никакого СП не инсталлировано...
Загружаешься с С: - ойййй... все настроенное - покорежено...
Активная система на Е: и ставится очередной СП.
А причем тут Ms Sql?
Получил первое соединение по ОДБС.
Сколько всего проблем у ИБМ.... На форуме ошибка датирована 2012 годом, до сих пор не исправлено.
В последнем пакете для загрузки аддон для 2013 студии, хотя для 2015 тоже сделано. Что для 2017 непонятно.
Загрузил гигов 5 из десятка разных ссылок провел фиг знает сколько экспериментов, пока что то получил.
Что то мне хронически не везет с Явой прогами. Как что надо пользовать - обязательно монстр с ошибками.
А причем тут Ms Sql?
-----
Ты вроде об нем говорил? Ну так СП - его...
Получил первое соединение по ОДБС.
-----
Времена С++Буилдер 5.0.
Все написано, инсталировано, проверено и работает.
Ставится какая-то мелочевка и... все потухло...
МДАК... поменялся... даже версия осталась та же... но - не работает...
Что то мне хронически не везет с Явой прогами.
-----
В 2000-х в жабисты писали всех, кто мог отличить фор от иф... разгребать это надо будет долго...
Если сервис пак гробит систему так это проблемы сервис пака.
А вот когда приложение базы данных ставит на виртуалку докер и виртуалбох и только потом при запуске докер грит что нет режима виртуализации, а после деинсталляции сетевые настройки исчезают, то это уже явно проблема разработчиков.
Этож надо тоже додуматься - делать версию для разработчиков которая в принципе не будет работать на виртуалке.