Pre-build /Post-build переменные в VisualStudio

Macro Description

$(ConfigurationName)

Имя текущей конфигурации проекта, например «Debug | Any CPU».

$(OutDir)

Путь к каталогу выходных файлов относительно каталога проекта. Это разрешает значение для свойства «Каталог вывода». Он включает обратную косую черту '\'.

$(DevEnvDir)

Каталог установки Visual Studio 2005 (определенный с помощью диска и пути); Включает обратную косую черту '\'.

$(PlatformName)

Название целевой платформы. Например, «AnyCPU».

$(ProjectDir)

Каталог проекта (определяемый с помощью диска и пути); Включает обратную косую черту '\'.

$(ProjectPath)

Абсолютный путь к проекту (определяется с помощью диска, пути, базового имени и расширения файла).

$(ProjectName)

Базовое имя проекта.

$(ProjectFileName)

Имя файла проекта (определяемое базовым именем и расширением файла).

$(ProjectExt)

Расширение файла проекта. Он включает '.' Перед расширением файла.

$(SolutionDir)

Каталог решения (определяемого с помощью диска и пути); Включает обратную косую черту '\'.

$(SolutionPath)

Абсолютный путь к решению (определяется приводом, путем, базовым именем и расширением файла).

$(SolutionName)

Базовое имя решения.

$(SolutionFileName)

Имя файла решения (определяемое базовым именем и расширением файла).

$(SolutionExt)

Расширение файла решения. Он включает '.' Перед расширением файла.

$(TargetDir)

Каталог основного выходного файла для сборки (определяется с помощью диска и пути). Он включает обратную косую черту '\'.

$(TargetPath)

Абсолютный путь к основному выходному файлу для сборки (определяется приводом, путем, базовым именем и расширением файла).

$(TargetName)

Базовое имя основного выходного файла для сборки.

$(TargetFileName)

Имя файла основного выходного файла для сборки (определяется как базовое имя и расширение файла).

$(TargetExt)

Расширение файла основного выходного файла для сборки. Он включает '.' Перед расширением файла.

 

$(RemoteMachine) Задайте значение свойства Remote Machine на странице свойств отладки. Дополнительные сведения см. в разделе Изменение параметров проекта для конфигурации отладки C или C++.
$(Configuration) Имя текущей конфигурации проекта (например, Debug).
$(Platform) Имя текущей платформы проекта (например, Win32).
$(ParentName) (Не рекомендуется.) Имя элемента, содержащего данный элемент проекта. Это будет имя родительской папки или имя проекта.
$(RootNameSpace) Пространство имен (при наличии), содержащее приложение.
$(IntDir) Путь к каталогу, заданному для промежуточных файлов. Если это относительный путь, промежуточные файлы передаются по этому пути, добавленному к каталогу проекта. Этот путь должен содержать косую черту в конце. Путь разрешается в значение для свойства Intermediate Directory. Не используйте $(OutDir) для определения этого свойства.
$(OutDir) Путь к каталогу выходных файлов. Если это относительный путь, выходные файлы передаются по этому пути, добавленному к каталогу проекта. Этот путь должен содержать косую черту в конце. Путь разрешается в значение для свойства Output Directory. Не используйте $(IntDir) для определения этого свойства.
$(DevEnvDir) Папка установки Visual Studio (определяется как диск + путь); включает обратную косую черту "\".
$(InputDir) (Не рекомендуется; перенесено.) Каталог входного файла (определяется как диск + путь); включает обратную косую черту "\". Если проект является входными данными, этот макрос эквивалентен $(ProjectDir).
$(InputPath) (Не рекомендуется; перенесено.) Абсолютный путь к входному файлу (определяется как диск + путь + базовое имя + расширение файла). Если проект является входными данными, этот макрос эквивалентен $(ProjectPath).
$(InputName) (Не рекомендуется; перенесено.) Базовое имя входного файла. Если проект является входными данными, этот макрос эквивалентен $(ProjectName).
$(InputFileName) (Не рекомендуется; перенесено.) Имя входного файла (определяется как базовое имя + расширение файла). Если проект является входными данными, этот макрос эквивалентен $(ProjectFileName).
$(InputExt) (Не рекомендуется; перенесено.) Расширение имени входного файла. Включает символ "." перед расширением файла. Если проект является входными данными, этот макрос эквивалентен $(ProjectExt).
$(ProjectDir) Каталог проекта (определяется как диск + путь); включает обратную косую черту "\".
$(ProjectPath) Абсолютный путь к проекту (определяется как диск + путь + базовое имя + расширение файла).
$(ProjectName) Базовое имя проекта.
$(ProjectFileName) Имя файла проекта (определяется как базовое имя + расширение файла).
$(ProjectExt) Расширение файла проекта. Включает символ "." перед расширением файла.
$(SolutionDir) Каталог решения (определяется как диск + путь); включает обратную косую черту "\".
$(SolutionPath) Абсолютный путь к решению (определяется как диск + путь + базовое имя + расширение файла).
$(SolutionName) Базовое имя решения.
$(SolutionFileName) Имя файла решения (определяется как базовое имя + расширение файла).
$(SolutionExt) Расширение файла решения. Включает символ "." перед расширением файла.
$(TargetDir) Каталог основного выходного файла для сборки (определяется как диск + путь); включает обратную косую черту "\".
$(TargetPath) Абсолютный путь к основному выходному файлу для сборки (определяется как диск + путь + базовое имя + расширение файла).
$(TargetName) Базовое имя основного выходного файла сборки.
$(TargetFileName) Имя основного выходного файла для сборки (определяется как базовое имя + расширение файла).
$(TargetExt) Расширение имени основного выходного файла сборки. Включает символ "." перед расширением файла.
$(VSInstallDir) Каталог, в котором установлено программное обеспечение Visual Studio.

Это свойство содержит версию целевой платформы Visual Studio, которая может отличаться от платформы Visual Studio компьютера. Например, при построении с помощью $(PlatformToolset) = v110 свойство $(VSInstallDir) содержит путь к установке Visual Studio 2012.
$(VCInstallDir) Каталог, в котором установлено программное обеспечение Visual C++.

Это свойство содержит версию целевой платформы Visual C++, которая может отличаться от платформы Visual Studio компьютера. Например, при построении с помощью $(PlatformToolset) = v90 свойство $(VCInstallDir) содержит путь к установке Visual C++ 2008.
$(FrameworkDir) Каталог, в котором установлена платформа .NET Framework.
$(FrameworkVersion) Версия платформы .NET Framework, используемая Visual Studio. В сочетании с $(FrameworkDir) — полный путь к версии .NET Framework, используемой Visual Studio.
$(FrameworkSDKDir) Каталог, в котором установлена платформа .NET Framework. Платформу .NET Framework можно установить в составе Visual Studio или отдельно.
$(WebDeployPath) Относительный путь от корня веб-развертывания до каталога выходных данных проекта. Возвращает значение такого же типа, что и аргумент RelativePath.
$(WebDeployRoot) Абсолютный путь к расположению <localhost>. Например, c:\inetpub\wwwroot.
$(SafeParentName) (Не рекомендуется.) Имя непосредственного родителя в допустимом формате. Например, форма является родителем RESX-файла.
$(SafeInputName) (Не рекомендуется.) Имя файла как допустимое имя класса (без расширения файла).
$(SafeRootNamespace) (Не рекомендуется.) Имя пространства имен, в которое мастера проекта будут добавлять код. Это пространство имен будет содержать только те символы, которые разрешены в допустимых идентификаторах C++.
$(FxCopDir) Путь к файлу fxcop.cmd. Файл fxcop.cmd устанавливается не со всеми выпусками Visual C++.

https://msdn.microsoft.com/en-us/library/42x5kfw4(v=vs.80).aspx

https://msdn.microsoft.com/ru-ru/library/c02as0cs.aspx

Определение: Ковариантность и Контравариантность

  • Ковариантность: позволяет использовать более конкретный тип, чем заданный изначально.

  • Контравариантность: позволяет использовать более универсальный тип, чем заданный изначально.

  • Инвариантность: позволяет использовать только заданный тип.

 

Generic Модификатор IN

Generic Модификатор Out

https://blogs.msdn.microsoft.com/charlie/2008/10/28/linq-farm-covariance-and-contravariance-in-c-4-0/

https://msdn.microsoft.com/en-us/library/sx2bwtw7.aspx

https://msdn.microsoft.com/en-us/library/d5x73970.aspx

https://msdn.microsoft.com/en-us/library/bb384067.aspx

Как обновить форк репозитория в github

# Add the remote, call it "upstream":

git remote add upstream https://github.com/whoever/whatever.git

# Fetch all the branches of that remote into remote-tracking branches,
# such as upstream/master:

git fetch upstream

# Make sure that you're on your master branch:

git checkout master

# Rewrite your master branch so that any commits of yours that
# aren't already in upstream/master are replayed on top of that
# other branch:

git rebase upstream/master

#or

git merge upstream/master

 

http://stackoverflow.com/questions/7244321/how-do-i-update-a-github-forked-repository

C# работа с файловой системой

// получить список всех файлов во всех директориях начиная с базовой
Directory.GetFiles(dirPath, "*", SearchOption.AllDirectories); 

// получить список всех подпапок для текущей папки
Directory.EnumerateDirectories(dirPath); 

// получить список файлов в текущей папке
Directory.EnumerateFiles(dirPath); 

Получение информации о вызывающем методе с помощью CallerMemberNameAttribute

Иногда нам нужно получить информацию о методе в котором просиходит вызов фунции. Для этого есть аттрибут CallerMemberName - который позволяет получить имя вызывающего метода.

public void SomeFunc([CallerMemberName] string propertyName = null)
{
           Debug.WriteLine(propertyName);
}

MSDN:

https://msdn.microsoft.com/ru-ru/library/s53w0dze(v=vs.110).aspx

Cover Ass Management

Проблема в том, что наши манагеры не дотягивают до этого уровне. У нас все больше практикуется Cover Your Ass тип разработки, когда все пытаются прикрыть задницу на случай того если ничего не получится. И это вместо того, чтобы учиться достигать целей валидными средствами.

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

не мог удрежатся, спасибо https://dev.by/users/vyt за это коментарий!

https://dev.by/lenta/main/5-x-8-60-i-chas-raboty-programmista

 

 

Поиск элементов в Selenium C#

Вот несколько селекторов:

 

By.XPath($"//span[contains(text(),'SomeText}')]")
By.XPath($"//a[contains(text(),'SomeText}')]")
By.XPath("//div[3]/a/span")
By.XPath("//div[@id='sidebar']/ul/li/ul/li[3]/div/a/span")
By.LinkText("Some Link Text")
By.CssSelector("#left-drawer-button > i.material-icons")
By.Id("ElementID")

 

global.json версия SDK

для того чтобы установить нужную версию SDK в файле global.json нужно добавить секцию sdk

{

"projects": [ "src" ],

"sdk": { "version": "1.0.0-rc2-16595" }

}

Нет ссылки на NETStandard.Library

не все пакеты на данный момент находятся в nuget, некоторые находяться в myget

по этому нужно выполнить

 

dotnet restore -s https://myget.org/f/dotnet-core

Установка .NET Core

Для начала нужно установить DNVM – (.NET Version Manager (DNVM))
В Windows он устанавливается вместе с Visual Studio (если вы вберите  Microsoft Web Developer Tools)  либо установить самостоятельно выполнив скрипт:

powershell -NoProfile -ExecutionPolicy unrestricted -Command "&{$Branch='dev';iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))}"
 
В Osx   нужно выполнить в консоли:
    curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh
 
После установки введите в консоли dnvm чтоб убедиться что все работает
 
Дальше введите нужно установить runtime
 
    dnvm install latest
 
если хотите бета версии тогда (dnvm install latest -Unstable –Persistent)
Для установки х64 версии coreclr
    dnvm install -r coreclr -arch x64 latest -u

теперь можно убиться что есть DNX и DNU, для этого выполните
dnx

а затем
dnu

и в завершении можно проверить все обновления
    dnvm upgrade
для обновления только coreclr
    dnvm upgrade -r coreclr
для обновления полного .net
    dnvm upgrade -r clr
для обновления mono
   dnvm upgrade -r mono

   dnvm update-self
в конце выполним
    dnvm list
чтобы увидеть список установленных CLR

Установить активный CLR:
    dnvm use 1.0.0-rc1-update1 -r coreclr -arch x64

Установить CLR по умолчанию:
    dnvm alias default 1.0.0-rc1-update1 -r coreclr -arch x64

Для удаления:
    dnvm uninstall 1.0.0-beta8 -r clr -arch x86
настройка закончена.
Теперь для запуска приложения нужно перейти в папку с ним
Выполнить там
     dnu restore
для обновления пакетов-зависимостей
а затем запустить, для консоли:
    dnx run
или для mvc
    dnx web


http://docs.asp.net/en/latest/getting-started/index.html
https://github.com/dotnet/corefxlab/

Как создать пустой проект generator-aspnet
https://www.npmjs.com/package/generator-aspnet



Работа с проектом
Запуск консольного проекта:
    dnx run
Запуск проекта сконкретным именем:
dnx run ConsoleApp1
для запуска web  париложения
    dnx web

dnx --configuration Release run

Сборка проекта
Построить проект:
     dnu build
Подготовить проект для nuget
     dnu pack

Подготовить проект к пубилкации
    dnu publish

http://docs.asp.net/en/latest/dnx/
http://docs.asp.net/en/latest/dnx/projects.html


.NET Core command-line (CLI) tools
https://github.com/dotnet/cli
Это удобный интрумент который включает в себя почти все вышеперечисленное
Для интсаляции надо скачать пакет с сайта а затем все просто:

dotnet new
dotnet restore  (dotnet restore -s https://myget.org/f/dotnet-core)
dotnet run



Реализация IEnumerable<T>

class MyClass<T> : IEnumerable<T>
{
	#region IEnumerable<T>

	public IEnumerator<T> GetEnumerator()
	{
		List<T> list = new List<T>();
		return list.GetEnumerator();
	}

	IEnumerator IEnumerable.GetEnumerator()
	{
		return this.GetEnumerator();
	}

	#endregion
}