Пробелы в именах путей
Всасывали в окнах навсегда и, вероятно, будут продолжать сосать вечно. Да, вы можете заключить в двойные кавычки, так что "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\amd64\MSBuild.exe"
будет работать, но что, если что-то еще требует кавычек или $ Diety-help-you, вы должны передать это как аргумент чему-то вроде xp_cmdshell, который допускает только один элемент во всем аргументеиметь пару двойных кавычек ... Да, подход заключается в использовании грязных хаков соглашения о присвоении имен dos 8.3, потому что они все еще работают.
Из командной строки Win + R cmd.exe
cd /d C:\
dir /x
Это указывает командной оболочке на смену дисков и переход к корню диска C. /x
во второй команде
отображает короткие имена, сгенерированные для имен файлов не-8dot3.
Таким образом, вы должны увидеть некоторые выходные данные, подобные этим
C:\>dir /x
Volume in drive C has no label.
Volume Serial Number is 3AB8-1C01
Directory of C:\
10/30/2019 04:26 PM <DIR> Dropbox
03/13/2019 06:07 PM <DIR> Intel
08/25/2019 01:32 PM <DIR> javajars
10/19/2019 03:33 PM <DIR> NEVERW~1 NeverwinterNights
03/12/2019 04:34 PM <DIR> NVIDIA
08/25/2019 02:01 PM <DIR> OnMyPath
03/18/2019 10:52 PM <DIR> PerfLogs
10/14/2019 09:57 PM <DIR> PROGRA~1 Program Files
10/19/2019 03:51 PM <DIR> PROGRA~2 Program Files (x86)
11/14/2018 07:16 PM <DIR> Python27
11/14/2018 07:16 PM <DIR> PYTHON~1 Python27amd64
06/22/2019 11:17 AM <DIR> Src
06/30/2019 08:45 PM <DIR> ssisdata
10/19/2019 01:52 PM <DIR> TEMP
06/28/2019 02:21 PM <DIR> tmp
07/30/2019 06:52 AM 110,312 UkLog.dat
05/28/2019 04:25 PM <DIR> Users
10/19/2019 03:54 PM <DIR> Windows
1 File(s) 110,312 bytes
17 Dir(s) 333,863,874,560 bytes free
NeverwinterNights и Python27amd64 слишком длинные (большечем 8 символов), поэтому они отображаются в первом столбце «имя». «Program Files» и «Program Files (x86)» отображаются потому, что в их именах есть пробел (также более 8 символов).
Важно использовать альтернативное имя. Шаблон не сложный, это первые 6 символов, меньше пробела, а затем ~#
от 1 до 9, пока вы не получите более 9 заявок.
C:\PROGRA~2>dir /x mic*
Volume in drive C has no label.
Volume Serial Number is 3AB8-1C01
Directory of C:\PROGRA~2
02/21/2018 06:00 AM <DIR> MICROS~2 Microsoft Analysis Services
03/16/2018 02:17 AM <DIR> MICROS~2.NET Microsoft ASP.NET
06/22/2019 01:24 PM <DIR> MI7DE1~1 Microsoft Azure Storage Explorer
04/24/2019 06:48 PM <DIR> MICROS~4 Microsoft Help Viewer
03/01/2018 12:36 PM <DIR> MIF5BA~1 Microsoft Office
09/12/2018 04:35 PM <DIR> MI29F1~1 Microsoft OneDrive
10/24/2018 06:12 AM <DIR> MICROS~3 Microsoft SDKs
01/19/2019 10:48 AM <DIR> MI9950~1 Microsoft Silverlight
07/11/2019 08:10 PM <DIR> MICROS~1 Microsoft SQL Server
04/24/2019 06:50 PM <DIR> MIEFB9~1 Microsoft SQL Server Management Studio 18
11/14/2018 07:17 PM <DIR> MIB055~1 Microsoft Visual Studio
02/21/2018 06:02 AM <DIR> MICROS~2.0 Microsoft Visual Studio 10.0
05/28/2019 04:33 PM <DIR> MICROS~3.0 Microsoft Visual Studio 11.0
05/28/2019 04:33 PM <DIR> MICROS~4.0 Microsoft Visual Studio 12.0
05/28/2019 04:33 PM <DIR> MICROS~1.0 Microsoft Visual Studio 14.0
10/24/2018 06:07 AM <DIR> MIFDD6~1 Microsoft Web Tools
05/28/2019 07:23 PM <DIR> Microsoft.NET
0 File(s) 0 bytes
17 Dir(s) 333,865,095,168 bytes free
Я уверен, что магия в том, какРабота с альтернативными именами была задокументирована ... 25 лет назад - я думаю, что эта чепуха вышла с Windows 95, но серьезно, черт возьми, с ней.
Итак, вы ищете сборку, которая находится в папке x86,Не позволяйте завершению табуляции помочь вам изменить каталог, так как он будет использовать полное имя, а не короткое. cd progra~2
Мыть, полоскать, повторять до тех пор, пока вы не попадете в папку с вашим исполняемым файлом. Длинные имена файлов не будут иметь значения, поэтому ваш Профессионал в пути не сломается, это всего лишь пробел, но в конечном итоге вы попадете в папку с .exe, а затем просто найдете путь. Я выбираю ленивый маршрут и просто прошу dir построить мне путь с dir /s /b msbuild.exe
C:\PROGRA~2\MIB055~1\2017\Enterprise\MSBuild\15.0\Bin>dir /s /b MSBuild.exe
C:\PROGRA~2\MIB055~1\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe
C:\PROGRA~2\MIB055~1\2017\Enterprise\MSBuild\15.0\Bin\amd64\MSBuild.exe
. На этом этапе вы должны иметь возможность направить любой из этих путей к MSBuild в BimlStudio, который затем сохраняет их. в файл .resp и посмотрите, решает ли это проблему с пробелами в пути.
Разблокировка функций C # 6.0
Сегодня я узнал, что может использовать функции 6.0 в скрипте SSISЗадачи и компоненты.
public void Main()
{
string name = "mark";
string v = $"Hello, {name}!";
bool fireagain = false;
Dts.Events.FireInformation(0, "Really worked", v, string.Empty, 0, ref fireagain);
Dts.TaskResult = (int)ScriptResults.Success;
}
и там в моем окне вывода
Information: 0x0 at Script Task, Really worked: Hello, mark!
К сожалению, компилятор Biml (bimlc) не поддерживает roslyn (я знал, что это будущее)цель, но были зависимости, и я не знаю текущего состояния, за исключением того, что, как я слышал, скоро будет новое снижение, вероятно, для поддержки выпуска SQL Server 2019 года). Я буду пинговать людей из Varigence (авторов BimlStudio и BimlExpress), чтобы подтвердить.