重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
windows-git-bash-paths by josiahsiegel/claude-plugin-marketplace
npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill windows-git-bash-paths强制:在 Windows 上始终对文件路径使用反斜杠
在 Windows 上使用编辑或写入工具时,您必须在文件路径中使用反斜杠 (\),而不是正斜杠 (/)。
示例:
D:/repos/project/file.tsxD:\repos\project\file.tsx这适用于:
除非用户明确要求,否则切勿创建新的文档文件。
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
SQL Server 开发主要基于 Windows,许多开发人员在 Windows 上使用 Git Bash (MINGW/MSYS2) 作为首选 shell。当与需要 Windows 风格路径的 Windows 原生工具(如 SqlPackage、MSBuild 和 Visual Studio)一起工作时,这带来了独特的路径转换挑战。
本技能提供了在 Windows 上使用 Git Bash 进行 SSDT 工作流时,处理路径转换问题、shell 检测和最佳实践的全面指导。
Git Bash 会自动将 POSIX 风格的路径转换为 Windows 路径,但这可能会导致命令行参数出现问题:
自动转换:
/foo → C:/Program Files/Git/usr/foo/foo:/bar → C:\msys64\foo;C:\msys64\bar--dir=/foo → --dir=C:/msys64/foo对 SqlPackage 有问题:
# Git Bash 将 /Action 转换为路径!
sqlpackage /Action:Publish /SourceFile:MyDB.dacpac
# 变为:sqlpackage C:/Program Files/Git/usr/Action:Publish ...
✓ 参数中的前导正斜杠 (/) ✓ 冒号分隔的路径列表 ✓ 跟在 - 或 , 后面且包含路径组件的参数
✓ 包含 = 的参数(变量赋值) ✓ 驱动器说明符 (C:) ✓ 包含 ; 的参数(已经是 Windows 格式) ✓ 以 // 开头的参数(Windows 开关)
为特定命令禁用路径转换:
# 临时禁用路径转换
MSYS_NO_PATHCONV=1 sqlpackage /Action:Publish \
/SourceFile:"MyDatabase.dacpac" \
/TargetServerName:"localhost" \
/TargetDatabaseName:"MyDB"
# 适用于所有 SqlPackage 操作
MSYS_NO_PATHCONV=1 sqlpackage /Action:Extract \
/SourceConnectionString:"Server=localhost;Database=MyDB;Integrated Security=True;" \
/TargetFile:"MyDB_backup.dacpac"
重要说明:
0、false 或空值仍会禁用转换env -u MSYS_NO_PATHCONV对 SqlPackage 参数使用双斜杠:
# 在 Git Bash 和 CMD 中均有效
sqlpackage //Action:Publish \
//SourceFile:MyDatabase.dacpac \
//TargetServerName:localhost \
//TargetDatabaseName:MyDB
# 使用双斜杠进行提取
sqlpackage //Action:Extract \
//SourceConnectionString:"Server=localhost;Database=MyDB;Integrated Security=True;" \
//TargetFile:output.dacpac
优势:
始终使用反斜杠引用路径:
# 带引号的 Windows 路径在 Git Bash 中有效
MSYS_NO_PATHCONV=1 sqlpackage /Action:Publish \
/SourceFile:"D:\Projects\MyDB\bin\Release\MyDB.dacpac" \
/TargetConnectionString:"Server=localhost;Database=MyDB;Integrated Security=True;"
# 或使用正斜杠(Windows 两者都接受)
MSYS_NO_PATHCONV=1 sqlpackage /Action:Publish \
/SourceFile:"D:/Projects/MyDB/bin/Release/MyDB.dacpac" \
/TargetConnectionString:"Server=localhost;Database=MyDB;Integrated Security=True;"
对于 Windows 原生工具,考虑使用原生 shell:
# PowerShell(推荐用于 Windows SSDT 工作流)
sqlpackage /Action:Publish `
/SourceFile:"MyDatabase.dacpac" `
/TargetServerName:"localhost" `
/TargetDatabaseName:"MyDB"
:: CMD
sqlpackage /Action:Publish ^
/SourceFile:"MyDatabase.dacpac" ^
/TargetServerName:"localhost" ^
/TargetDatabaseName:"MyDB"
#!/bin/bash
# 方法 1:检查 $OSTYPE
case "$OSTYPE" in
msys*) # MSYS/Git Bash/MinGW
export MSYS_NO_PATHCONV=1
SQLPACKAGE_ARGS="/Action:Publish /SourceFile:MyDB.dacpac"
;;
cygwin*) # Cygwin
export MSYS_NO_PATHCONV=1
SQLPACKAGE_ARGS="/Action:Publish /SourceFile:MyDB.dacpac"
;;
linux-gnu*) # Linux
SQLPACKAGE_ARGS="/Action:Publish /SourceFile:MyDB.dacpac"
;;
darwin*) # macOS
SQLPACKAGE_ARGS="/Action:Publish /SourceFile:MyDB.dacpac"
;;
esac
sqlpackage $SQLPACKAGE_ARGS
# 方法 2:检查 uname -s(最便携)
case "$(uname -s)" in
MINGW64*|MINGW32*)
# Git Bash
export MSYS_NO_PATHCONV=1
echo "Git Bash 检测到 - 路径转换已禁用"
;;
MSYS_NT*)
# MSYS
export MSYS_NO_PATHCONV=1
echo "MSYS 检测到 - 路径转换已禁用"
;;
CYGWIN*)
# Cygwin
export MSYS_NO_PATHCONV=1
echo "Cygwin 检测到 - 路径转换已禁用"
;;
Linux*)
# Linux 或 WSL
echo "Linux 检测到"
;;
Darwin*)
# macOS
echo "macOS 检测到"
;;
esac
# 方法 3:检查 $MSYSTEM(Git Bash 特定)
if [ -n "$MSYSTEM" ]; then
# 在 Git Bash/MSYS2 中运行
export MSYS_NO_PATHCONV=1
echo "MSYS 环境检测到:$MSYSTEM"
case "$MSYSTEM" in
MINGW64) echo "64 位原生 Windows 环境" ;;
MINGW32) echo "32 位原生 Windows 环境" ;;
MSYS) echo "POSIX 兼容环境" ;;
esac
fi
#!/bin/bash
# build-and-deploy.sh - 跨平台 SSDT 构建脚本
set -e # 出错时退出
# 检测 shell 并设置路径转换
if [ -n "$MSYSTEM" ]; then
echo "Git Bash/MSYS2 检测到 - 禁用路径转换"
export MSYS_NO_PATHCONV=1
fi
# 变量
PROJECT_NAME="MyDatabase"
BUILD_CONFIG="Release"
DACPAC_PATH="bin/${BUILD_CONFIG}/${PROJECT_NAME}.dacpac"
TARGET_SERVER="${SQL_SERVER:-localhost}"
TARGET_DB="${SQL_DATABASE:-MyDB}"
# 构建
echo "正在构建 ${PROJECT_NAME}..."
dotnet build "${PROJECT_NAME}.sqlproj" -c "$BUILD_CONFIG"
# 验证 DACPAC 是否存在
if [ ! -f "$DACPAC_PATH" ]; then
echo "错误:在 $DACPAC_PATH 未找到 DACPAC"
exit 1
fi
echo "DACPAC 构建成功:$DACPAC_PATH"
# 部署
echo "正在部署到 ${TARGET_SERVER}/${TARGET_DB}..."
# 使用双斜杠方法以获得最大兼容性
sqlpackage //Action:Publish \
//SourceFile:"$DACPAC_PATH" \
//TargetServerName:"$TARGET_SERVER" \
//TargetDatabaseName:"$TARGET_DB" \
//p:BlockOnPossibleDataLoss=False
echo "部署完成!"
问题:
# Git Bash 破坏了路径
sqlpackage /Action:Publish /SourceFile:./bin/Release/MyDB.dacpac
# 错误:找不到文件
解决方案:
# 使用 MSYS_NO_PATHCONV
MSYS_NO_PATHCONV=1 sqlpackage /Action:Publish \
/SourceFile:"./bin/Release/MyDB.dacpac"
# 或使用绝对 Windows 路径
MSYS_NO_PATHCONV=1 sqlpackage /Action:Publish \
/SourceFile:"D:/Projects/MyDB/bin/Release/MyDB.dacpac"
# 或使用双斜杠
sqlpackage //Action:Publish //SourceFile:./bin/Release/MyDB.dacpac
问题:
# 包含空格的路径会导致问题
dotnet build "D:/Program Files/MyProject/Database.sqlproj"
# 在 Git Bash 中有效(dotnet 正确处理路径)
# 但 MSBuild 路径可能会失败
msbuild "D:/Program Files/MyProject/Database.sqlproj"
# 如果未正确引用,可能会失败
解决方案:
# 始终引用包含空格的路径
dotnet build "D:/Program Files/MyProject/Database.sqlproj"
# 在 Windows 上对 MSBuild 使用反斜杠
msbuild "D:\Program Files\MyProject\Database.sqlproj"
# 或使用 8.3 短名称(无空格)
msbuild "D:/PROGRA~1/MyProject/Database.sqlproj"
问题:
# 找不到发布配置文件
sqlpackage /Action:Publish \
/SourceFile:MyDB.dacpac \
/Profile:./Profiles/Production.publish.xml
解决方案:
# 使用带引号路径的 MSYS_NO_PATHCONV
MSYS_NO_PATHCONV=1 sqlpackage /Action:Publish \
/SourceFile:"MyDB.dacpac" \
/Profile:"./Profiles/Production.publish.xml"
# 或使用绝对 Windows 路径
MSYS_NO_PATHCONV=1 sqlpackage /Action:Publish \
/SourceFile:"D:/Projects/MyDB.dacpac" \
/Profile:"D:/Projects/Profiles/Production.publish.xml"
问题:
# 连接字符串中的文件路径
/SourceConnectionString:"Server=localhost;Database=MyDB;Integrated Security=True;AttachDbFilename=D:/Data/MyDB.mdf"
# 路径被破坏
解决方案:
# 引用整个连接字符串
MSYS_NO_PATHCONV=1 sqlpackage /Action:Extract \
/SourceConnectionString:"Server=localhost;Database=MyDB;Integrated Security=True;AttachDbFilename=D:\Data\MyDB.mdf" \
/TargetFile:"output.dacpac"
# 或在连接字符串中使用双反斜杠
/SourceConnectionString:"Server=localhost;Database=MyDB;Integrated Security=True;AttachDbFilename=D:\\Data\\MyDB.mdf"
name: SSDT 构建与部署
on: [push]
jobs:
build:
runs-on: windows-latest
defaults:
run:
shell: bash # 使用 Git Bash
steps:
- uses: actions/checkout@v4
- name: 设置 .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: 安装 SqlPackage
run: dotnet tool install -g Microsoft.SqlPackage
- name: 构建数据库项目
run: dotnet build Database.sqlproj -c Release
- name: 部署(禁用路径转换)
env:
MSYS_NO_PATHCONV: 1
run: |
sqlpackage /Action:Publish \
/SourceFile:"bin/Release/MyDatabase.dacpac" \
/TargetServerName:"localhost" \
/TargetDatabaseName:"MyDB"
jobs:
build:
runs-on: windows-latest
defaults:
run:
shell: pwsh # 使用 PowerShell - 无路径问题
steps:
- name: 部署数据库
run: |
sqlpackage /Action:Publish `
/SourceFile:"bin/Release/MyDatabase.dacpac" `
/TargetServerName:"localhost" `
/TargetDatabaseName:"MyDB"
MSYS_NO_PATHCONV=1MSYS_NO_PATHCONV=1shell: pwsh)# 禁用路径转换(Git Bash/MSYS2/Cygwin)
export MSYS_NO_PATHCONV=1
# 重新启用路径转换
env -u MSYS_NO_PATHCONV
# Git Bash - 方法 1 (MSYS_NO_PATHCONV)
MSYS_NO_PATHCONV=1 sqlpackage /Action:Publish /SourceFile:"MyDB.dacpac" /TargetServerName:"localhost" /TargetDatabaseName:"MyDB"
# Git Bash - 方法 2 (双斜杠)
sqlpackage //Action:Publish //SourceFile:MyDB.dacpac //TargetServerName:localhost //TargetDatabaseName:MyDB
# PowerShell (推荐用于 Windows)
sqlpackage /Action:Publish /SourceFile:"MyDB.dacpac" /TargetServerName:"localhost" /TargetDatabaseName:"MyDB"
# CMD
sqlpackage /Action:Publish /SourceFile:"MyDB.dacpac" /TargetServerName:"localhost" /TargetDatabaseName:"MyDB"
# 检查是否为 Git Bash/MSYS
[ -n "$MSYSTEM" ] && echo "Git Bash/MSYS2 检测到"
# 检查 uname
[[ "$(uname -s)" =~ ^MINGW ]] && echo "Git Bash 检测到"
# 条件性地设置路径转换
[ -n "$MSYSTEM" ] && export MSYS_NO_PATHCONV=1
症状: SqlPackage 报告"无效参数"或"未知操作" 原因: Git Bash 将 /Action 转换为文件路径 修复: 使用 MSYS_NO_PATHCONV=1 或双斜杠 //Action
症状: 路径正确但找不到 DACPAC 或项目文件 原因: 路径转换破坏了文件路径 修复: 引用路径并使用 MSYS_NO_PATHCONV=1
症状: dotnet build 有效但 sqlpackage 失败 原因: dotnet CLI 正确处理路径,但 SqlPackage 使用 / 参数 修复: 仅对 SqlPackage 命令使用 MSYS_NO_PATHCONV=1
症状: 包含"Program Files"或其他空格的路径失败 原因: 未引用的路径被拆分为多个参数 修复: 始终引用路径:/SourceFile:"D:/Program Files/MyDB.dacpac"
每周安装次数
63
仓库
GitHub 星标数
21
首次出现
2026年1月24日
安全审计
安装于
claude-code51
gemini-cli49
opencode49
codex46
cursor45
github-copilot42
MANDATORY: Always Use Backslashes on Windows for File Paths
When using Edit or Write tools on Windows, you MUST use backslashes (\) in file paths, NOT forward slashes (/).
Examples:
D:/repos/project/file.tsxD:\repos\project\file.tsxThis applies to:
NEVER create new documentation files unless explicitly requested by the user.
SQL Server development is Windows-heavy, and many developers use Git Bash (MINGW/MSYS2) as their preferred shell on Windows. This creates unique path conversion challenges when working with Windows-native tools like SqlPackage, MSBuild, and Visual Studio that expect Windows-style paths.
This skill provides comprehensive guidance on handling path conversion issues, shell detection, and best practices for SSDT workflows on Windows with Git Bash.
Git Bash automatically converts POSIX-style paths to Windows paths, but this can cause issues with command-line arguments:
Automatic Conversions:
/foo → C:/Program Files/Git/usr/foo/foo:/bar → C:\msys64\foo;C:\msys64\bar--dir=/foo → --dir=C:/msys64/fooProblematic for SqlPackage:
# Git Bash converts /Action to a path!
sqlpackage /Action:Publish /SourceFile:MyDB.dacpac
# Becomes: sqlpackage C:/Program Files/Git/usr/Action:Publish ...
✓ Leading forward slash (/) in arguments ✓ Colon-separated path lists ✓ Arguments after - or , with path components
✓ Arguments containing = (variable assignments) ✓ Drive specifiers (C:) ✓ Arguments with ; (already Windows format) ✓ Arguments starting with // (Windows switches)
Disable path conversion for specific commands:
# Temporarily disable path conversion
MSYS_NO_PATHCONV=1 sqlpackage /Action:Publish \
/SourceFile:"MyDatabase.dacpac" \
/TargetServerName:"localhost" \
/TargetDatabaseName:"MyDB"
# Works for all SqlPackage actions
MSYS_NO_PATHCONV=1 sqlpackage /Action:Extract \
/SourceConnectionString:"Server=localhost;Database=MyDB;Integrated Security=True;" \
/TargetFile:"MyDB_backup.dacpac"
Important Notes:
0, false, or empty still disables conversionenv -u MSYS_NO_PATHCONVUse double slashes for SqlPackage parameters:
# Works in Git Bash and CMD
sqlpackage //Action:Publish \
//SourceFile:MyDatabase.dacpac \
//TargetServerName:localhost \
//TargetDatabaseName:MyDB
# Extract with double slashes
sqlpackage //Action:Extract \
//SourceConnectionString:"Server=localhost;Database=MyDB;Integrated Security=True;" \
//TargetFile:output.dacpac
Advantages:
Always quote paths with backslashes:
# Quoted Windows paths work in Git Bash
MSYS_NO_PATHCONV=1 sqlpackage /Action:Publish \
/SourceFile:"D:\Projects\MyDB\bin\Release\MyDB.dacpac" \
/TargetConnectionString:"Server=localhost;Database=MyDB;Integrated Security=True;"
# Or with forward slashes (Windows accepts both)
MSYS_NO_PATHCONV=1 sqlpackage /Action:Publish \
/SourceFile:"D:/Projects/MyDB/bin/Release/MyDB.dacpac" \
/TargetConnectionString:"Server=localhost;Database=MyDB;Integrated Security=True;"
For Windows-native tools, consider using native shells:
# PowerShell (recommended for Windows SSDT workflows)
sqlpackage /Action:Publish `
/SourceFile:"MyDatabase.dacpac" `
/TargetServerName:"localhost" `
/TargetDatabaseName:"MyDB"
:: CMD
sqlpackage /Action:Publish ^
/SourceFile:"MyDatabase.dacpac" ^
/TargetServerName:"localhost" ^
/TargetDatabaseName:"MyDB"
#!/bin/bash
# Method 1: Check $OSTYPE
case "$OSTYPE" in
msys*) # MSYS/Git Bash/MinGW
export MSYS_NO_PATHCONV=1
SQLPACKAGE_ARGS="/Action:Publish /SourceFile:MyDB.dacpac"
;;
cygwin*) # Cygwin
export MSYS_NO_PATHCONV=1
SQLPACKAGE_ARGS="/Action:Publish /SourceFile:MyDB.dacpac"
;;
linux-gnu*) # Linux
SQLPACKAGE_ARGS="/Action:Publish /SourceFile:MyDB.dacpac"
;;
darwin*) # macOS
SQLPACKAGE_ARGS="/Action:Publish /SourceFile:MyDB.dacpac"
;;
esac
sqlpackage $SQLPACKAGE_ARGS
# Method 2: Check uname -s (most portable)
case "$(uname -s)" in
MINGW64*|MINGW32*)
# Git Bash
export MSYS_NO_PATHCONV=1
echo "Git Bash detected - path conversion disabled"
;;
MSYS_NT*)
# MSYS
export MSYS_NO_PATHCONV=1
echo "MSYS detected - path conversion disabled"
;;
CYGWIN*)
# Cygwin
export MSYS_NO_PATHCONV=1
echo "Cygwin detected - path conversion disabled"
;;
Linux*)
# Linux or WSL
echo "Linux detected"
;;
Darwin*)
# macOS
echo "macOS detected"
;;
esac
# Method 3: Check $MSYSTEM (Git Bash specific)
if [ -n "$MSYSTEM" ]; then
# Running in Git Bash/MSYS2
export MSYS_NO_PATHCONV=1
echo "MSYS environment detected: $MSYSTEM"
case "$MSYSTEM" in
MINGW64) echo "64-bit native Windows environment" ;;
MINGW32) echo "32-bit native Windows environment" ;;
MSYS) echo "POSIX-compliant environment" ;;
esac
fi
#!/bin/bash
# build-and-deploy.sh - Cross-platform SSDT build script
set -e # Exit on error
# Detect shell and set path conversion
if [ -n "$MSYSTEM" ]; then
echo "Git Bash/MSYS2 detected - disabling path conversion"
export MSYS_NO_PATHCONV=1
fi
# Variables
PROJECT_NAME="MyDatabase"
BUILD_CONFIG="Release"
DACPAC_PATH="bin/${BUILD_CONFIG}/${PROJECT_NAME}.dacpac"
TARGET_SERVER="${SQL_SERVER:-localhost}"
TARGET_DB="${SQL_DATABASE:-MyDB}"
# Build
echo "Building ${PROJECT_NAME}..."
dotnet build "${PROJECT_NAME}.sqlproj" -c "$BUILD_CONFIG"
# Verify DACPAC exists
if [ ! -f "$DACPAC_PATH" ]; then
echo "ERROR: DACPAC not found at $DACPAC_PATH"
exit 1
fi
echo "DACPAC built successfully: $DACPAC_PATH"
# Deploy
echo "Deploying to ${TARGET_SERVER}/${TARGET_DB}..."
# Use double-slash method for maximum compatibility
sqlpackage //Action:Publish \
//SourceFile:"$DACPAC_PATH" \
//TargetServerName:"$TARGET_SERVER" \
//TargetDatabaseName:"$TARGET_DB" \
//p:BlockOnPossibleDataLoss=False
echo "Deployment complete!"
Problem:
# Git Bash mangles the path
sqlpackage /Action:Publish /SourceFile:./bin/Release/MyDB.dacpac
# Error: Cannot find file
Solution:
# Use MSYS_NO_PATHCONV
MSYS_NO_PATHCONV=1 sqlpackage /Action:Publish \
/SourceFile:"./bin/Release/MyDB.dacpac"
# OR use absolute Windows path
MSYS_NO_PATHCONV=1 sqlpackage /Action:Publish \
/SourceFile:"D:/Projects/MyDB/bin/Release/MyDB.dacpac"
# OR use double slashes
sqlpackage //Action:Publish //SourceFile:./bin/Release/MyDB.dacpac
Problem:
# Path with spaces causes issues
dotnet build "D:/Program Files/MyProject/Database.sqlproj"
# Works in Git Bash (dotnet handles paths correctly)
# But MSBuild paths may fail
msbuild "D:/Program Files/MyProject/Database.sqlproj"
# May fail if not quoted properly
Solution:
# Always quote paths with spaces
dotnet build "D:/Program Files/MyProject/Database.sqlproj"
# Use backslashes for MSBuild on Windows
msbuild "D:\Program Files\MyProject\Database.sqlproj"
# Or use 8.3 short names (no spaces)
msbuild "D:/PROGRA~1/MyProject/Database.sqlproj"
Problem:
# Publish profile not found
sqlpackage /Action:Publish \
/SourceFile:MyDB.dacpac \
/Profile:./Profiles/Production.publish.xml
Solution:
# Use MSYS_NO_PATHCONV with quoted paths
MSYS_NO_PATHCONV=1 sqlpackage /Action:Publish \
/SourceFile:"MyDB.dacpac" \
/Profile:"./Profiles/Production.publish.xml"
# Or absolute Windows path
MSYS_NO_PATHCONV=1 sqlpackage /Action:Publish \
/SourceFile:"D:/Projects/MyDB.dacpac" \
/Profile:"D:/Projects/Profiles/Production.publish.xml"
Problem:
# File paths in connection strings
/SourceConnectionString:"Server=localhost;Database=MyDB;Integrated Security=True;AttachDbFilename=D:/Data/MyDB.mdf"
# Path gets mangled
Solution:
# Quote entire connection string
MSYS_NO_PATHCONV=1 sqlpackage /Action:Extract \
/SourceConnectionString:"Server=localhost;Database=MyDB;Integrated Security=True;AttachDbFilename=D:\Data\MyDB.mdf" \
/TargetFile:"output.dacpac"
# Or use double backslashes in connection string
/SourceConnectionString:"Server=localhost;Database=MyDB;Integrated Security=True;AttachDbFilename=D:\\Data\\MyDB.mdf"
name: SSDT Build and Deploy
on: [push]
jobs:
build:
runs-on: windows-latest
defaults:
run:
shell: bash # Use Git Bash
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: Install SqlPackage
run: dotnet tool install -g Microsoft.SqlPackage
- name: Build Database Project
run: dotnet build Database.sqlproj -c Release
- name: Deploy with Path Conversion Disabled
env:
MSYS_NO_PATHCONV: 1
run: |
sqlpackage /Action:Publish \
/SourceFile:"bin/Release/MyDatabase.dacpac" \
/TargetServerName:"localhost" \
/TargetDatabaseName:"MyDB"
jobs:
build:
runs-on: windows-latest
defaults:
run:
shell: pwsh # Use PowerShell - no path issues
steps:
- name: Deploy Database
run: |
sqlpackage /Action:Publish `
/SourceFile:"bin/Release/MyDatabase.dacpac" `
/TargetServerName:"localhost" `
/TargetDatabaseName:"MyDB"
MSYS_NO_PATHCONV=1 in your shell profile for SSDT workMSYS_NO_PATHCONV=1 conditionallyshell: pwsh)# Disable path conversion (Git Bash/MSYS2/Cygwin)
export MSYS_NO_PATHCONV=1
# Re-enable path conversion
env -u MSYS_NO_PATHCONV
# Git Bash - Method 1 (MSYS_NO_PATHCONV)
MSYS_NO_PATHCONV=1 sqlpackage /Action:Publish /SourceFile:"MyDB.dacpac" /TargetServerName:"localhost" /TargetDatabaseName:"MyDB"
# Git Bash - Method 2 (Double Slash)
sqlpackage //Action:Publish //SourceFile:MyDB.dacpac //TargetServerName:localhost //TargetDatabaseName:MyDB
# PowerShell (Recommended for Windows)
sqlpackage /Action:Publish /SourceFile:"MyDB.dacpac" /TargetServerName:"localhost" /TargetDatabaseName:"MyDB"
# CMD
sqlpackage /Action:Publish /SourceFile:"MyDB.dacpac" /TargetServerName:"localhost" /TargetDatabaseName:"MyDB"
# Check if Git Bash/MSYS
[ -n "$MSYSTEM" ] && echo "Git Bash/MSYS2 detected"
# Check uname
[[ "$(uname -s)" =~ ^MINGW ]] && echo "Git Bash detected"
# Set path conversion conditionally
[ -n "$MSYSTEM" ] && export MSYS_NO_PATHCONV=1
Symptom: SqlPackage reports "Invalid parameter" or "Unknown action" Cause: Git Bash converting /Action to a file path Fix: Use MSYS_NO_PATHCONV=1 or double-slash //Action
Symptom: DACPAC or project file not found despite correct path Cause: Path conversion mangling the file path Fix: Quote paths and use MSYS_NO_PATHCONV=1
Symptom: dotnet build works but sqlpackage fails Cause: dotnet CLI handles paths correctly, but SqlPackage uses / parameters Fix: Use MSYS_NO_PATHCONV=1 for SqlPackage commands only
Symptom: Paths with "Program Files" or other spaces fail Cause: Unquoted paths split into multiple arguments Fix: Always quote paths: /SourceFile:"D:/Program Files/MyDB.dacpac"
Weekly Installs
63
Repository
GitHub Stars
21
First Seen
Jan 24, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
claude-code51
gemini-cli49
opencode49
codex46
cursor45
github-copilot42
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
123,700 周安装