Skip to content

Commit c706c28

Browse files
authored
Support $(ProjectName).NativeMethods.txt pattern for single-file-app projects (#1550)
* Support $(ProjectName).NativeMethods.txt pattern for single-file-app projects
1 parent 80aec9b commit c706c28

7 files changed

Lines changed: 19 additions & 6 deletions

File tree

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
11
GetTickCount
2-
GetForegroundWindow
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// This file tests that $(ProjectName).NativeMethods.txt is automatically picked up.
2+
GetForegroundWindow

integration-tests/sdk/Program.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1-
class Program
1+
using Windows.Win32.Foundation;
2+
3+
class Program
24
{
35
static void Main(string[] args)
46
{
57
Windows.Win32.PInvoke.GetTickCount();
8+
9+
HWND hwnd = Windows.Win32.PInvoke.GetForegroundWindow();
610
}
711
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
GetForegroundWindow

src/Microsoft.Windows.CsWin32/SourceGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ public void Execute(GeneratorExecutionContext context)
185185

186186
GeneratorOptions? options;
187187
AdditionalText? nativeMethodsJsonFile = context.AdditionalFiles
188-
.FirstOrDefault(af => string.Equals(Path.GetFileName(af.Path), NativeMethodsJsonAdditionalFileName, StringComparison.OrdinalIgnoreCase));
188+
.FirstOrDefault(af => Path.GetFileName(af.Path).EndsWith(NativeMethodsJsonAdditionalFileName, StringComparison.OrdinalIgnoreCase));
189189
if (nativeMethodsJsonFile is object)
190190
{
191191
string optionsJson = nativeMethodsJsonFile.GetText(context.CancellationToken)!.ToString();
@@ -205,7 +205,7 @@ public void Execute(GeneratorExecutionContext context)
205205
}
206206

207207
IEnumerable<AdditionalText> nativeMethodsTxtFiles = context.AdditionalFiles
208-
.Where(af => string.Equals(Path.GetFileName(af.Path), NativeMethodsTxtAdditionalFileName, StringComparison.OrdinalIgnoreCase));
208+
.Where(af => Path.GetFileName(af.Path).EndsWith(NativeMethodsTxtAdditionalFileName, StringComparison.OrdinalIgnoreCase));
209209
if (!nativeMethodsTxtFiles.Any())
210210
{
211211
return;

src/Microsoft.Windows.CsWin32/build/Microsoft.Windows.CsWin32.props

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@
1616
<AdditionalFiles Include="NativeMethods.txt" Condition="Exists('NativeMethods.txt')">
1717
<Generator Condition="'$(CsWin32RunAsBuildTask)'=='true'">MSBuild:Compile</Generator>
1818
</AdditionalFiles>
19+
<AdditionalFiles Include="$(ProjectName).NativeMethods.json" Condition="Exists('$(ProjectName).NativeMethods.json')">
20+
<!-- Add this metadata to trigger a design-time build to re-run the generator for CsWin32RunAsBuildTask=true scenarios. -->
21+
<Generator Condition="'$(CsWin32RunAsBuildTask)'=='true'">MSBuild:Compile</Generator>
22+
</AdditionalFiles>
23+
<AdditionalFiles Include="$(ProjectName).NativeMethods.txt" Condition="Exists('$(ProjectName).NativeMethods.txt')">
24+
<Generator Condition="'$(CsWin32RunAsBuildTask)'=='true'">MSBuild:Compile</Generator>
25+
</AdditionalFiles>
1926
</ItemGroup>
2027

2128
<ItemGroup>

src/Microsoft.Windows.CsWin32/build/Microsoft.Windows.CsWin32.targets

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@
4545
Outputs="$(CsWin32GeneratorGeneratedFilesList);@(CsWin32GeneratorPreviousOutputs);$(CsWin32GeneratorSucceededMarker)"
4646
Condition="'$(CsWin32RunAsBuildTask)'=='true' and '@(ProjectionMetadataWinmd)'!=''">
4747
<ItemGroup>
48-
<CsWin32NativeMethodsTxt Include="%(AdditionalFiles.FullPath)" Condition="'%(FileName)%(Extension)'=='NativeMethods.txt'" />
49-
<CsWin32NativeMethodsJson Include="%(AdditionalFiles.FullPath)" Condition="'%(FileName)%(Extension)'=='NativeMethods.json'" />
48+
<CsWin32NativeMethodsTxt Include="%(AdditionalFiles.FullPath)" Condition="$([System.String]::new('%(FileName)%(Extension)').EndsWith('NativeMethods.txt'))" />
49+
<CsWin32NativeMethodsJson Include="%(AdditionalFiles.FullPath)" Condition="$([System.String]::new('%(FileName)%(Extension)').EndsWith('NativeMethods.json'))" />
5050
</ItemGroup>
5151

5252
<PropertyGroup>

0 commit comments

Comments
 (0)