Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,6 @@ powershell.version

# default location for produced nuget packages
/nuget-artifacts

# resgen output
gen
21 changes: 16 additions & 5 deletions build.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ function Start-PSBuild {
[switch]$NoPath,
[switch]$Restore,
[string]$Output,
[switch]$ResGen,

[Parameter(ParameterSetName='CoreCLR')]
[switch]$Publish,
Expand Down Expand Up @@ -143,6 +144,13 @@ function Start-PSBuild {
Start-NativeExecution { dotnet restore $RestoreArguments }
}

# handle ResGen
if ($ResGen -or -not (Test-Path "$($Options.Top)/gen"))
{
log "Run ResGen (generating C# bindings for resx files)"
Start-ResGen
}

# Build native components
if ($IsLinux -or $IsOSX) {
$Ext = if ($IsLinux) {
Expand Down Expand Up @@ -867,6 +875,9 @@ function Send-GitDiffToSd {

function Start-ResGen
{
[CmdletBinding()]
param()

@("Microsoft.PowerShell.Commands.Management",
"Microsoft.PowerShell.Commands.Utility",
"Microsoft.PowerShell.ConsoleHost",
Expand All @@ -875,9 +886,9 @@ function Start-ResGen
"Microsoft.PowerShell.Security",
"System.Management.Automation") | % {
$module = $_
ls "$PSScriptRoot/src/$module/resources" | % {
Get-ChildItem "$PSScriptRoot/src/$module/resources" | % {
$className = $_.Name.Replace('.resx', '')
$xml = [xml](cat -raw $_.FullName)
$xml = [xml](Get-Content -raw $_.FullName)

$fileName = $className
$namespace = ''
Expand All @@ -890,9 +901,9 @@ function Start-ResGen
}

$genSource = Get-StronglyTypeCsFileForResx -xml $xml -ModuleName $module -ClassName $className -NamespaceName $namespace
$outPath = "$PSScriptRoot/src/windows-build/gen/$module/$fileName.cs"
log "ResGen for $outPath"
mkdir -ErrorAction SilentlyContinue (Split-Path $outPath) > $null
$outPath = "$PSScriptRoot/src/$module/gen/$fileName.cs"
Write-Verbose "ResGen for $outPath"
New-Item -Type Directory -ErrorAction SilentlyContinue (Split-Path $outPath) > $null
Set-Content -Encoding Ascii -Path $outPath -Value $genSource
}
}
Expand Down
23 changes: 9 additions & 14 deletions docs/workflow/resources.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,13 @@ They live in `src\<project>\resources` folders.

At the moment `dotnet cli` doesn't support generating C# bindings (strongly typed resource files).

We are using `src\windows-build\gen` folder in [src\windows-build](https://github.com/PowerShell/psl-windows-build)
with pre-generated `.cs` files to work-around it.
See [issue 756](https://github.com/PowerShell/PowerShell/issues/746) for details.
We are using our own `Start-ResGen` to generate them.

Usually it's called as part of the regular build with

```
Start-PSBuild -ResGen
```

## Editing resx files

Expand All @@ -17,15 +21,6 @@ It will try to create `.cs` files for you and you will get whole bunch of hard-t
To edit resource file, use any **plain text editor**.
Resource file is a simple xml, and it's easy to edit.

### Updating string

If you just updated the string value, that's all you need to do: no need to re-generate `.cs` files

### Adding or removing string

When you adding or removing string, `.cs` file need to be changed.
## Adding resx files

1. Run `Start-ResGen` function from `build.psm1`
1. Make sure your code is building with newly generated resources (run `Start-PSBuild`).
1. Go to submodule (`cd src\windows-build`) and perform the [submodule commit dance](../git/committing.md).
Follow working with [submodule rules](../../.github/CONTRIBUTING.md#submodules)
Add corresponding entries in `Start-ResGen` in `.\build.psm1`.
6 changes: 0 additions & 6 deletions src/Microsoft.PowerShell.Commands.Management/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
"buildOptions": {
"define": [ "CORECLR" ],
"compile": {
"include": [ "../windows-build/gen/Microsoft.PowerShell.Commands.Management/*.cs" ],
"exclude": [
"commands/management/ClearRecycleBinCommand.cs",
"commands/management/CommitTransactionCommand.cs",
Expand Down Expand Up @@ -48,11 +47,6 @@
}
},
"net451": {
"buildOptions": {
"compile": {
"include": [ "../windows-build/gen/Microsoft.PowerShell.Commands.Management/*.cs" ]
}
},
"frameworkAssemblies": {
"System.ServiceProcess": "",
"System.Windows.Forms": "",
Expand Down
6 changes: 0 additions & 6 deletions src/Microsoft.PowerShell.Commands.Utility/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
"buildOptions": {
"define": [ "CORECLR" ],
"compile": {
"include": [ "../windows-build/gen/Microsoft.PowerShell.Commands.Utility/*.cs" ],
"exclude": [
"commands/utility/FormatAndOutput/OutGridView/ColumnInfo.cs",
"commands/utility/FormatAndOutput/OutGridView/ExpressionColumnInfo.cs",
Expand Down Expand Up @@ -65,11 +64,6 @@
}
},
"net451": {
"buildOptions": {
"compile": {
"include": [ "../windows-build/gen/Microsoft.PowerShell.Commands.Utility/*.cs" ]
}
},
"frameworkAssemblies": {
"System.Drawing": "",
"System.Web": "",
Expand Down
1 change: 0 additions & 1 deletion src/Microsoft.PowerShell.ConsoleHost/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
"buildOptions": {
"warningsAsErrors": true,
"allowUnsafe": true,
"compile": [ "../windows-build/gen/Microsoft.PowerShell.ConsoleHost/*.cs" ],
"copyToOutput": {
"include": [
"Modules",
Expand Down
3 changes: 1 addition & 2 deletions src/Microsoft.PowerShell.CoreCLR.Eventing/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@

"buildOptions": {
"warningsAsErrors": true,
"allowUnsafe": true,
"compile": [ "../windows-build/gen/Microsoft.PowerShell.CoreCLR.Eventing/*.cs" ]
"allowUnsafe": true
},

"frameworks": {
Expand Down
3 changes: 1 addition & 2 deletions src/Microsoft.PowerShell.LocalAccounts/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
"authors": [ "OPS" ],

"buildOptions": {
"warningsAsErrors": true,
"compile": [ "../windows-build/gen/Microsoft.PowerShell.LocalAccounts/*.cs" ]
"warningsAsErrors": true
},

"dependencies": {
Expand Down
6 changes: 0 additions & 6 deletions src/Microsoft.PowerShell.Security/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
"buildOptions": {
"define": [ "CORECLR" ],
"compile": {
"include": [ "../windows-build/gen/Microsoft.PowerShell.Security/*.cs" ],
"exclude": [
"security/CertificateCommands.cs",
"security/CmsCommands.cs",
Expand All @@ -28,11 +27,6 @@
}
},
"net451": {
"buildOptions": {
"compile": {
"include": [ "../windows-build/gen/Microsoft.PowerShell.Security/*.cs" ]
}
}
}
}
}
7 changes: 0 additions & 7 deletions src/System.Management.Automation/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
"buildOptions": {
"define": [ "CORECLR" ],
"compile": {
"include": [ "../windows-build/gen/System.Management.Automation/*.cs" ],
"exclude": [
"cimSupport/cmdletization/xml/cmdlets-over-objects.objectModel.autogen.cs",
"cimSupport/cmdletization/xml/cmdlets-over-objects.xmlSerializer.autogen.cs",
Expand Down Expand Up @@ -163,12 +162,6 @@
}
},
"net451": {
"buildOptions": {
"compile": {
"include": [ "../windows-build/gen/System.Management.Automation/*.cs" ]

}
},
"frameworkAssemblies": {
"System.Runtime": "",
"System.Xml": "",
Expand Down
2 changes: 1 addition & 1 deletion src/windows-build