Skip to content

Instantly share code, notes, and snippets.

@Vinaum8
Last active June 21, 2025 16:19
Show Gist options
  • Select an option

  • Save Vinaum8/c8716d47b3edd762cff4a7bf1298e685 to your computer and use it in GitHub Desktop.

Select an option

Save Vinaum8/c8716d47b3edd762cff4a7bf1298e685 to your computer and use it in GitHub Desktop.
convert csproj to sdk style
#!/bin/bash
# Target framework == net 9.0
set -e
if [ $# -lt 1 ]; then
echo "Uso: $0 caminho/projeto.csproj"
exit 1
fi
CSPROJ="$1"
if [ ! -f "$CSPROJ" ]; then
echo "Arquivo $CSPROJ não encontrado."
exit 1
fi
DIR=$(dirname "$CSPROJ")
BASE=$(basename "$CSPROJ")
NAME="${BASE%.csproj}"
BACKUP="${CSPROJ}.backup"
NEW_CSPROJ="${CSPROJ}.new"
echo "🔁 Criando backup em: $BACKUP"
cp "$CSPROJ" "$BACKUP"
echo "🔍 Extraindo propriedades..."
ASSEMBLY_NAME=$(grep -oPm1 '(?<=<AssemblyName>)[^<]+' "$CSPROJ" || echo "$NAME")
ROOT_NAMESPACE=$(grep -oPm1 '(?<=<RootNamespace>)[^<]+' "$CSPROJ" || echo "$NAME")
echo "🛠 Gerando novo SDK-style .csproj..."
cat > "$NEW_CSPROJ" <<EOF
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<AssemblyName>$ASSEMBLY_NAME</AssemblyName>
<RootNamespace>$ROOT_NAMESPACE</RootNamespace>
</PropertyGroup>
EOF
# packages.config
PKGCFG="$DIR/packages.config"
if [ -f "$PKGCFG" ]; then
echo "📦 Convertendo pacotes de $PKGCFG..."
echo " <ItemGroup>" >> "$NEW_CSPROJ"
grep '<package ' "$PKGCFG" | while read -r line; do
PACKAGE_ID=$(echo "$line" | sed -n 's/.*id="\([^"]*\)".*/\1/p')
PACKAGE_VERSION=$(echo "$line" | sed -n 's/.*version="\([^"]*\)".*/\1/p')
if [ -n "$PACKAGE_ID" ] && [ -n "$PACKAGE_VERSION" ]; then
echo " <PackageReference Include=\"$PACKAGE_ID\" Version=\"$PACKAGE_VERSION\" />" >> "$NEW_CSPROJ"
fi
done
echo " </ItemGroup>" >> "$NEW_CSPROJ"
else
echo "⚠️ Nenhum packages.config encontrado. Adicione dependências manualmente."
fi
echo "</Project>" >> "$NEW_CSPROJ"
echo "✅ Novo projeto gerado em: $NEW_CSPROJ"
echo "📌 Agora você pode revisar e substituir o original:"
echo " mv \"$NEW_CSPROJ\" \"$CSPROJ\""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment