Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > [C#] buid.bat


Автор: Abyx 10.6.2010, 11:13
хочу компилить программу на C# .bat или .vbs файлом, 
примерно так:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe some.cs

как получить путь к компилятору C# для .NET 2.0 ?

Автор: jonie 10.6.2010, 11:24
Код

Определение установленных версий .NET Framework
Чтобы определить, какие версии .NET Framework установлены, найдите папку %systemroot%\Microsoft.NET\Framework. Чтобы открыть эту папку, можно вставить этот адрес в адресную строку проводника Windows. Версии .NET Framework находятся в указанных ниже папках.

    * v3.5
    * v3.0
    * v2.0.50727
    * v1.1.4322
    * v1.0.3705

Примечание. Если отображаются другие папки вида vN.N.NXXXX, они могут содержать бета-версии или предварительные версии .NET Framework. Эти версии не рассматриваются в данной статье.
(с) http://support.microsoft.com/kb/318785
Соответственно вот и ответ.

Автор: Abyx 10.6.2010, 11:29
jonie, т.е. 2.0 всегда будет в папке v2.0.50727 ?

Автор: Abyx 10.6.2010, 12:11
файл some.bat
Код

/*
@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe %0
goto :eof
*/

using System;
 
namespace Example
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Hello, World!");
            Console.ReadKey(true);
        }
    }
}

что можно написать в 1й строчке, чтобы при запуске .bat'а не писалась ошибка 
Код

"/*" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Автор: Abyx 10.6.2010, 15:45
применил cls:
Код

/* & @echo off & cls & rem !!! IT MUST BE FIRST LINE OF FILE !!!
set outfile=some.exe
if exist %outfile% del %outfile%
%systemroot%\Microsoft.NET\Framework\v2.0.50727\csc.exe /out:%outfile% %0
if not exist %outfile% goto :eof
set /p ans=Run %outfile%? [y/n]^>
if "%ans%" == "y" %outfile%
goto :eof
*/

using System;
 
namespace Example
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Hello, World!");
            Console.ReadKey(true);
        }
    }
}



Добавлено @ 15:48
А назовем мы это "CSharpScript" =)

Автор: PashaPash 10.6.2010, 16:27
Abyx, lol, a ведь MS убил столько времени на разработку PowerShell.... smile

Автор: Abyx 10.6.2010, 20:16
PashaPash, PowerShell не у всех есть. Совсем не у всех.

Автор: Amp 10.6.2010, 20:29
Цитата(Abyx @  10.6.2010,  20:16 Найти цитируемый пост)
PowerShell не у всех есть. Совсем не у всех. 

Я как-то думал, что если человек собирается собирать программу, то у него уже стоят (или он готов поставить) соответствующие вспомогательные средства, системы сборки и т.п. Изначальная задача какая? Может просто таскать с собой nant или что-то более простое/самописное?

Автор: Abyx 11.6.2010, 00:15
Amp, задача - написать небольшую программу, и распространять ее вместе с исходником.
Распространение с программой исходника нужно для того, чтобы пользователь мог убедиться что программа делает именно то что надо, и не содержит троев\закладок и т.п..

Особенность C# в том, что он входит в .NET; по этому если программа на C# будет работать на компе, она будет и компилиться на этом компе.
Программа небольшая, и ее исходник состоит из 1 файла. Если внедрить скрипт построения в исходник, то дистрибутив программы будет состоять из 1 готового к компиляции и запуску файла. Это существенно облегчает распространение программы, ее исходник можно выложить как текст в посте на форуме (как в моем предыдущем посте). Тогда потенциальный пользователь может сразу оценить код программы, и ему не надо будет скачивать архив с кучей файлов, проектом студии\хмл-ом нанта и т.п.

Автор: PashaPash 11.6.2010, 01:26
Цитата(Amp @  10.6.2010,  20:29 Найти цитируемый пост)
 Может просто таскать с собой nant или что-то более простое/самописное? 

Если ест дотнет - то есть и msbuild.
Цитата(Abyx @  10.6.2010,  20:16 Найти цитируемый пост)
PashaPash, PowerShell не у всех есть. Совсем не у всех. 

Я в хорошем смысле. Преамбула из 10 строк дает возможность писать скрипты на C# - интересное решение smile

Автор: Amp 11.6.2010, 09:35
Цитата(PashaPash @  11.6.2010,  01:26 Найти цитируемый пост)
Если ест дотнет - то есть и msbuild.

О как, здорово smile

Цитата(Abyx @  11.6.2010,  00:15 Найти цитируемый пост)
Особенность C# в том, что он входит в .NET; по этому если программа на C# будет работать на компе, она будет и компилиться на этом компе.
Программа небольшая, и ее исходник состоит из 1 файла. Если внедрить скрипт построения в исходник, то дистрибутив программы будет состоять из 1 готового к компиляции и запуску файла. Это существенно облегчает распространение программы, ее исходник можно выложить как текст в посте на форуме (как в моем предыдущем посте). Тогда потенциальный пользователь может сразу оценить код программы, и ему не надо будет скачивать архив с кучей файлов, проектом студии\хмл-ом нанта и т.п.

Может потенциального пользователя не затруднит модифицировать переменные окружения и самому положить туда путь к компайлеру? Я, например, путь к javac всегда помещаю в %PATH%. 

Автор: Abyx 11.6.2010, 09:57
Amp, путь всегда одинаков, зачем его еще куда-то прописывать?

Автор: Любитель 11.6.2010, 10:03
Извращение, но красиво! smile

Автор: VirusUZ 30.6.2010, 07:40
/////////// in C#

Код

SystemDiagnostics.Process.start(@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe some.cs");


 smile 

Автор: Abyx 30.6.2010, 08:23
VirusUZ, что вы хотели сказать этим постом?

Автор: VirusUZ 30.6.2010, 08:42
/*
//a.bat
start C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe some.cs
  
*/

/////////// in C#

SystemDiagnostics.Process.start("a.bat");

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)