在 asp.net 核心中以编程方式更改解决方案名称的最佳方法是什么?
What is the best way to change the solution name programmatically in asp.net core?
我正在寻找一种方法来为 ASP.NET 核心项目提供更改 solution/project 名称的功能。我的第一个想法是在安装程序功能中以编程方式执行此操作,开发人员将在其中写入项目名称。是否可以在 .NET Framework 中或通过 Powershell 实现?
谢谢!
您可以使用以下功能来帮助您进行更改:
参考链接如下:
1) Link 1
2) Link 2
function Rename-Project
{
# designed to run from the src folder
param(
[string]$projectName=$(throw "projectName required."),
[string]$newProjectName=$(throw "newProjectName required.")
)
if(!(Test-Path $projectName)){
Write-Error "No project folder '$projectName' found"
return
}
if(!(Test-Path $projectName$projectName.csproj)){
Write-Error "No project '$projectName$projectName.dll' found"
return
}
if((Test-Path $newProjectName)){
Write-Error "Project '$newProjectName' already exists"
return
}
# project
hg rename $projectName$projectName.csproj $projectName$newProjectName.csproj
# folder
hg rename $projectName $newProjectName
# assembly title
$assemblyInfoPath = "$newProjectName\Properties\AssemblyInfo.cs"
(gc $assemblyInfoPath) -replace """$projectName""","""$newProjectName""" | sc $assemblyInfoPath
# root namespace
$projectFile = "$newProjectName$newProjectName.csproj"
(gc $projectFile) -replace "<RootNamespace>$projectName</RootNamespace>","<RootNamespace>$newProjectName</RootNamespace>" | sc $projectFile
# assembly name
(gc $projectFile) -replace "<AssemblyName>$projectName</AssemblyName>","<AssemblyName>$newProjectName</AssemblyName>" | sc $projectFile
# other project references
gci -Recurse -Include *.csproj |% { (gc $_) -replace "..\$projectName\$projectName.csproj", "..$newProjectName$newProjectName.csproj" | sc $_ }
gci -Recurse -Include *.csproj |% { (gc $_) -replace "<Name>$projectName</Name>", "<Name>$newProjectName</Name>" | sc $_ }
# solution
gci -Recurse -Include *.sln |% { (gc $_) -replace "\""$projectName\""", """$newProjectName""" | sc $_ }
gci -Recurse -Include *.sln |% { (gc $_) -replace "\""$projectName\$projectName.csproj\""", """$newProjectName$newProjectName.csproj""" | sc $_ }
}
我正在寻找一种方法来为 ASP.NET 核心项目提供更改 solution/project 名称的功能。我的第一个想法是在安装程序功能中以编程方式执行此操作,开发人员将在其中写入项目名称。是否可以在 .NET Framework 中或通过 Powershell 实现?
谢谢!
您可以使用以下功能来帮助您进行更改:
参考链接如下:
1) Link 1
2) Link 2
function Rename-Project
{
# designed to run from the src folder
param(
[string]$projectName=$(throw "projectName required."),
[string]$newProjectName=$(throw "newProjectName required.")
)
if(!(Test-Path $projectName)){
Write-Error "No project folder '$projectName' found"
return
}
if(!(Test-Path $projectName$projectName.csproj)){
Write-Error "No project '$projectName$projectName.dll' found"
return
}
if((Test-Path $newProjectName)){
Write-Error "Project '$newProjectName' already exists"
return
}
# project
hg rename $projectName$projectName.csproj $projectName$newProjectName.csproj
# folder
hg rename $projectName $newProjectName
# assembly title
$assemblyInfoPath = "$newProjectName\Properties\AssemblyInfo.cs"
(gc $assemblyInfoPath) -replace """$projectName""","""$newProjectName""" | sc $assemblyInfoPath
# root namespace
$projectFile = "$newProjectName$newProjectName.csproj"
(gc $projectFile) -replace "<RootNamespace>$projectName</RootNamespace>","<RootNamespace>$newProjectName</RootNamespace>" | sc $projectFile
# assembly name
(gc $projectFile) -replace "<AssemblyName>$projectName</AssemblyName>","<AssemblyName>$newProjectName</AssemblyName>" | sc $projectFile
# other project references
gci -Recurse -Include *.csproj |% { (gc $_) -replace "..\$projectName\$projectName.csproj", "..$newProjectName$newProjectName.csproj" | sc $_ }
gci -Recurse -Include *.csproj |% { (gc $_) -replace "<Name>$projectName</Name>", "<Name>$newProjectName</Name>" | sc $_ }
# solution
gci -Recurse -Include *.sln |% { (gc $_) -replace "\""$projectName\""", """$newProjectName""" | sc $_ }
gci -Recurse -Include *.sln |% { (gc $_) -replace "\""$projectName\$projectName.csproj\""", """$newProjectName$newProjectName.csproj""" | sc $_ }
}