-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathKillerShell.csproj
More file actions
188 lines (172 loc) · 10.7 KB
/
Copy pathKillerShell.csproj
File metadata and controls
188 lines (172 loc) · 10.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net48</TargetFramework>
<UseWPF>true</UseWPF>
<UseWindowsForms>true</UseWindowsForms>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
<AnalysisLevel>latest</AnalysisLevel>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<AssemblyTitle>KillerShell</AssemblyTitle>
<Product>KillerShell</Product>
<Company>killertools.net</Company>
<RootNamespace>KillerShell</RootNamespace>
<Version>1.2.4</Version>
<FileVersion>1.2.4.0</FileVersion>
<AssemblyVersion>1.2.4.0</AssemblyVersion>
<!-- Displayed version string (semver, matches the release tag: v1.2.4). -->
<InformationalVersion>1.2.4</InformationalVersion>
<!-- Shown in the About card next to the version so a user can tell how old their build
is. Must match the date on this version's CHANGELOG section - release.ps1 preflight
fails the release if it does not. Bump it with the version. -->
<ReleaseDate>2026-09-01</ReleaseDate>
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
<ApplicationIcon>Resources\ksh-icon.ico</ApplicationIcon>
<PlatformTarget>x64</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<!-- The test project lives inside this folder. Keep its sources and outputs out of the
application's SDK default globs. -->
<ItemGroup>
<Compile Remove="KillerShell.Tests\**\*.cs" />
<EmbeddedResource Remove="KillerShell.Tests\**\*" />
<None Remove="KillerShell.Tests\**\*" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\ksh-icon.ico" />
<!-- The brand icon pack (IconCache.cs), drawn for every directory and every tab kind.
Generated from brand\icons: each is cropped to its ink, squared and written at 128px,
which covers the 20px draw size up to the 250% app-scale ceiling and gives folders the
same optical weight as the tool icons (the source folder art carries 70px of padding the
others do not). Regenerate rather than hand-editing anything in Resources\icons. -->
<Resource Include="Resources\icons\*.png" />
<!-- The period icon pack the 98SE theme draws from, same 24 filenames as the brand pack above
so IconCache only has to swap a path prefix. Chicago95 art (GPL-3.0+/MIT), upscaled 5x
nearest-neighbor from its 32px originals to the same 160px canvas - integer scaling with
no interpolation, or the pixels stop being pixels. See Resources\icons\98\ATTRIBUTION.md
for the per-icon source map and the license. NOT covered by the glob above: MSBuild's
Include is not recursive, so this needs its own line. -->
<Resource Include="Resources\icons\98\*.png" />
<!-- The icon Explorer shows for the text types KillerShell associates. EmbeddedResource,
not Resource: Associations.cs points DefaultIcon at a real path on disk, so App.xaml.cs
has to extract it beside the exe. Same arrangement as KillerPDF's pdf-file.ico. -->
<EmbeddedResource Include="Resources\text-file.ico" />
<!-- The family grab cursors (Controls\DragCursors.cs): open hand on a draggable surface,
closed hand while the drag is live. 32x32 DIB, NOT PNG-compressed - LoadCursorFromFile
is unreliable with those. Art and the two files live in Killer Branding\icons; these are
copies, the same arrangement as the icon packs above. -->
<Resource Include="Resources\open_hand.cur" />
<Resource Include="Resources\closed_hand.cur" />
<Resource Include="Fonts\KillerShell.ttf" />
<!-- 26 glyphs, 2.9 KB: the handful a stock Windows monospaced font does NOT have but the
shipped prompt draws - the powerline separators, the git branch mark, the prompt chevron
and the ahead/behind arrows. The terminal draws a cell from this when the user's chosen
face has no glyph for it (Terminal/TerminalControl.cs), so a powerline prompt renders on
a machine with nothing but Consolas without imposing a typeface on anybody.
Subset of Terminess Nerd Font, SIL OFL 1.1 - see Fonts\KillerGlyphs-OFL.txt. -->
<Resource Include="Fonts\KillerGlyphs.ttf" />
</ItemGroup>
<!-- KillerPivot and KillerScripts, shipped with the app (Modules.cs). EmbeddedResource, not
Content: KillerShell is a single portable exe with no loose files beside it, and dropping
two module folders next to it would end that. They are unpacked to LocalAppData the first
time a shell opens and put on PSModulePath there.
These are copies: the modules have their own repositories (see each module's ProjectUri),
and the copies here need refreshing whenever either module ships. -->
<ItemGroup>
<EmbeddedResource Include="Modules\**\*" />
</ItemGroup>
<!-- The shipped PowerShell prompt (Terminal/PromptScript.cs). Embedded for the same reason
the modules are: one exe, no loose files. It is unpacked to LocalAppData on first use and
never overwritten there, so the copy the user edits survives an upgrade. -->
<ItemGroup>
<EmbeddedResource Include="Terminal\KillerPrompt.ps1" />
</ItemGroup>
<!-- Syntax definitions AvalonEdit does not ship (Editing/KillerHighlighting.cs). Embedded for
the same reason everything else here is: one portable exe, no loose files. No LogicalName
needed - the name MSBuild infers from this path is KillerShell.Highlighting.<file>, which is
exactly what KillerHighlighting asks for. -->
<ItemGroup>
<EmbeddedResource Include="Highlighting\*.xshd" />
</ItemGroup>
<!-- Vendored AvalonEdit (third_party\AvalonEdit, upstream tag v6.3.1). Compiled straight into
the exe rather than referenced as an assembly, so KillerShell stays one portable file;
third_party\AvalonEdit\VENDORED.md records what was changed and how to take a newer tag.
The SDK globs **\*.cs and **\*.xaml by itself, which would drag in their AssemblyInfo and
leave every built-in highlighting embedded under the wrong resource name, so the tree comes
out of every default glob first and goes back in a line at a time. -->
<ItemGroup>
<Compile Remove="third_party\**" />
<Page Remove="third_party\**" />
<Resource Remove="third_party\**" />
<EmbeddedResource Remove="third_party\**" />
<None Remove="third_party\**" />
</ItemGroup>
<ItemGroup>
<!-- Their AssemblyInfo declares attributes this project already carries. -->
<Compile Include="third_party\AvalonEdit\**\*.cs" Exclude="third_party\AvalonEdit\Properties\AssemblyInfo.cs" />
<Page Include="third_party\AvalonEdit\**\*.xaml" Exclude="third_party\AvalonEdit\themes\generic.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<!-- Linked back to themes\generic.xaml, the one path WPF looks in for a control's default
style. AssemblyInfo.cs already declares ThemeInfo(..., SourceAssembly), so with the file
at that path the AvalonEdit controls find their styles inside KillerShell.exe. -->
<Page Include="third_party\AvalonEdit\themes\generic.xaml">
<Link>themes\generic.xaml</Link>
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<!-- LogicalName is not decoration here. Highlighting\Resources\Resources.cs resolves the
built-in definitions by typeof(Resources).FullName + "." + filename, and the name MSBuild
would infer from this path begins with KillerShell.third_party, so PowerShell.xshd and
every one of its neighbors would come back null at runtime. -->
<EmbeddedResource Include="third_party\AvalonEdit\Highlighting\Resources\*.xshd" LogicalName="ICSharpCode.AvalonEdit.Highlighting.Resources.%(Filename)%(Extension)" />
<EmbeddedResource Include="third_party\AvalonEdit\Highlighting\Resources\*.xsd" LogicalName="ICSharpCode.AvalonEdit.Highlighting.Resources.%(Filename)%(Extension)" />
<!-- Referenced from their XAML: the two search buttons and the line-number margin cursor. -->
<Resource Include="third_party\AvalonEdit\Search\next.png" />
<Resource Include="third_party\AvalonEdit\Search\prev.png" />
<Resource Include="third_party\AvalonEdit\themes\RightArrow.cur" />
</ItemGroup>
<!-- Bake ReleaseDate into the assembly so About can show it. A file timestamp would not
survive being copied, and the PE linker stamp is a build date, not a release date. -->
<ItemGroup>
<AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute">
<_Parameter1>ReleaseDate</_Parameter1>
<_Parameter2>$(ReleaseDate)</_Parameter2>
</AssemblyAttribute>
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute">
<_Parameter1>KillerShell.Tests</_Parameter1>
</AssemblyAttribute>
</ItemGroup>
<ItemGroup>
<Reference Include="System.Net.Http" />
<!-- Task Manager tab (Shell/ProcessListControl.cs): WMI lookups for a process's command
line, full path and owner - Win32_Process via System.Management, not present in the
default net48 reference set. -->
<Reference Include="System.Management" />
<!-- The tab's Services view (Shell/ProcessListControl.cs): ServiceController.GetServices()
for the base list and Start/Stop/Restart, not present in the default net48 reference set
either - it ships in the framework but is not pulled in automatically. -->
<Reference Include="System.ServiceProcess" />
<!-- Archive browsing (Services/ArchiveProvider.cs): ZipArchive and GZipStream. Both ship
IN .NET Framework and are not pulled in automatically, the same as the two above -
these are framework references, NOT packages, so the app keeps its zero-dependency
single-exe build. ZipFile/ZipArchive live in the .FileSystem assembly; the streams
live in the other. -->
<Reference Include="System.IO.Compression" />
<Reference Include="System.IO.Compression.FileSystem" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="PolySharp" Version="1.16.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<!-- Every build input, including each complete theme dictionary, lives in this repository.
SDK-style globbing picks the XAML up as Page items without explicit entries. -->
</Project>