Здравствуйте, LMars, Вы писали:
LM>Здравствуйте, aaro, Вы писали:
A>>Может кто знает тогда как это с msbuild делать?
A>>пробовал /property:outDir=С:\Path не помогает.(
LM>Если не ошибаюсь, должно быть /property:OutputDir=С:\Path
нет .. ни OutDir, ни OutputDir, ни OutputPath .. ни остальные мыслимые вариации не приносят ожидаемого эффекта! Кто знает в чём проблема, кроме моего ДНК

???
Здравствуйте, aaro, Вы писали:
A>Это, вообще, реально?!
A>И если да — то в каком направлении рыть?
A>Заранее благодарю за ответы!!
В свое время пользовал вот это:
dc_build.js:
function js_include(file)
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile(file, 1);
str = f.ReadAll();
f.Close();
return str;
}
eval(js_include("bscripting.js"));
var WshShell = new ActiveXObject("WScript.Shell");
var tempdir = "c:\\temp\\test\\get";
var devPath = "C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Common7\\IDE\\devenv.exe";
var db = new VssObject("\\\\VSSServer\\VSS_Desktop\\SRCSAFE_INI");
db.GetLatest("$/Personal/Vit/GUISample",tempdir);
var command = devPath + " /build Release \""+tempdir+"\\GUISample.sln\"";
WScript.Echo(command);
var oExec = WshShell.Exec(command);
while (oExec.Status == 0)
{
WScript.Sleep(100);
}
WScript.Echo(oExec.Status);
// setup
var setupPath = tempdir + "\\Setup\\release.iss";
oExec = WshShell.Exec("\"C:\\Program Files\\Inno Setup 5\\ISCC.exe\" "+setupPath);
while (oExec.Status == 0)
{
WScript.Sleep(100);
}
WScript.Echo(oExec.Status);
bscripting.js:
/*
Как это можно использовать?
1. чтобы не копипастить весь bscripting.js в свои скрипты, нужно его
подключить. Стандартных аналогов include в WSH нет, так что придется
сделать небольшой финт ушами. А именно, скопировать в свой скрипт эту
функцию:
function js_include(file)
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile(file, 1);
str = f.ReadAll();
f.Close();
return str;
}
и далее ее использовать следующим образом:
eval(js_include("path_to_the\bscripting.js"));
2. После шага 1 можно пользоваться классом VssObject.
Все методы, если не оговорено иное, во-первых, возвращают строки с
результатом, которые можно писать в лог, а во-вторых, рекурсивные.
var db = new VssObject();
var db = new VssObject(path_to_the_SRCSAFE_INI,user,password);
2.1. Подключение к базе.
db.Open(path_to_the_SRCSAFE_INI,user,password);
все параметры как и в конструкторе необязательны, если что-то не задано,
то соответствующее значение возмется из настроек SS клиента, если он
установлен, если нет, то ССЗБ, ничего работать не будет.
2.2. Получение последней версии
GetLatest(sspath,localpath,label);
sspath путь в базе
localpath путь на диске, если файлы уже есть, то они обновятся
label необязательный параметр, если задан, то будут получены только
файлы с этой меткой
2.3. Получение списка checked out файлов
var list = db.GetCheckedOut(sspath);
вернет String Array со списком таких файлов
2.4. LabelLatest(sspath,label)
sspath путь в базе
label собственно метка
2.5. Если нужно что-то еще, то инфа по VSS 6.0 Automation есть тут:
ms-help://MS.MSDNQTR.2005JAN.1033/dnvss/html/vssauto.htm
(с точностью до версии MSDN)
3. Вспомогательные функции. Собственно, пока только одна :)
3.1. var str = ExtractVersionInfo(resfile,type);
Выдирает из RC-файла нужную информацию, в зависимости от type:
0 - FILEVERSION
1 - PRODUCTVERSION
*/
//----------------------------------------------------------------------
var VSSFLAG_USERRONO = 1;
var VSSFLAG_USERROYES = 2;
var VSSFLAG_TIMENOW = 4;
var VSSFLAG_TIMEMOD = 8;
var VSSFLAG_TIMEUPD = 12;
var VSSFLAG_EOLCR = 16;
var VSSFLAG_EOLLF = 32;
var VSSFLAG_EOLCRLF = 48;
var VSSFLAG_REPASK = 64;
var VSSFLAG_REPREPLACE = 128;
var VSSFLAG_REPSKIP = 192;
var VSSFLAG_REPMERGE = 256;
var VSSFLAG_CMPFULL = 512;
var VSSFLAG_CMPTIME = 1024;
var VSSFLAG_CMPCHKSUM = 1536;
var VSSFLAG_CMPFAIL = 2048;
var VSSFLAG_RECURSNO = 4096;
var VSSFLAG_RECURSYES = 8192;
var VSSFLAG_FORCEDIRNO = 16384;
var VSSFLAG_FORCEDIRYES = 32768;
var VSSFLAG_KEEPNO = 0x00010000;
var VSSFLAG_KEEPYES = 0x00020000;
var VSSFLAG_DELNO = 0x00040000;
var VSSFLAG_DELYES = 0x00080000;
var VSSFLAG_DELNOREPLACE = 0x000c0000;
var VSSFLAG_BINTEST = 0x00100000;
var VSSFLAG_BINBINARY = 0x00200000;
var VSSFLAG_BINTEXT = 0x00300000;
var VSSFLAG_DELTAYES = 0x00400000;
var VSSFLAG_DELTANO = 0x00800000;
var VSSFLAG_UPDASK = 0x01000000;
var VSSFLAG_UPDUPDATE = 0x02000000;
var VSSFLAG_UPDUNCH = 0x03000000;
var VSSFLAG_GETYES = 0x04000000;
var VSSFLAG_GETNO = 0x08000000;
var VSSFLAG_CHKEXCLUSIVEYES = 0x10000000;
var VSSFLAG_CHKEXCLUSIVENO = 0x20000000;
var VSSFLAG_HISTIGNOREFILES = 0x40000000;
function VssObject(ini,user,pass)
{
this.m_db = new ActiveXObject("SourceSafe");
this.m_user = "";
this.m_pass = "";
if( user )
this.m_user = user;
if( pass )
this.m_pass = pass;
if( ini )
this.Open(ini,user,pass);
else
this.m_db.Open();
}
VssObject.prototype.Open = function(ini,user,pass)
{
this.m_db.Open(ini,user,pass);
}
VssObject.prototype.GetLatest = function(sspath,localpath,label)
{
try
{
var ssitem = this.m_db.VSSItem(sspath);
var flags = VSSFLAG_RECURSYES | VSSFLAG_REPREPLACE | VSSFLAG_FORCEDIRNO;
if( !label )
ssitem.Get(localpath, flags);
else
{
var ssversion = ssitem.Version(label);
ssitem.Get(localpath, flags);
}
}
catch(e)
{
return e.message;
}
return "Latest version";
}
Здравствуйте, aaro, Вы писали:
A>>>Может кто знает тогда как это с msbuild делать?
A>>>пробовал /property:outDir=С:\Path не помогает.(
LM>>Если не ошибаюсь, должно быть /property:OutputDir=С:\Path
A>нет .. ни OutDir, ни OutputDir, ни OutputPath .. ни остальные мыслимые вариации не приносят ожидаемого эффекта! Кто знает в чём проблема, кроме моего ДНК
???
вообще-то эти ключевые слова описаны в MSDN... адрес не помню

попробуй в индексе посмотреть "outputpath property" — а там уже и на правила установки можно выйти...
возможно ты пытаешься переопределить это свойство для sln-файла — и оно не может выполнить именно из-за этого(путь определяется для каждого проекта отдельно).