Skip to content

Commit d5dc9e9

Browse files
committed
Ensure dotnet build works too
Both `ImportProjectExtensionProps` and `ImportProjectExtensionTargets` must be set to true, and we now use `MSBuildProjectExtensionsPath` to leverage the standard way of importing these targets. See dotnet/msbuild#9512 Fixes #139
1 parent 7b96776 commit d5dc9e9

File tree

6 files changed

+28
-11
lines changed

6 files changed

+28
-11
lines changed

src/Demo/global.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"msbuild-sdks": {
3-
"SmallSharp": "42.42.516-main"
3+
"SmallSharp": "2.0.0"
44
}
55
}

src/SmallSharp/Sdk.props

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
<Import Project="..\build\SmallSharp.props" />
44

5+
<PropertyGroup>
6+
<ImportProjectExtensionProps>true</ImportProjectExtensionProps>
7+
<ImportProjectExtensionTargets>true</ImportProjectExtensionTargets>
8+
</PropertyGroup>
9+
510
<ItemGroup>
611
<PackageReference Include="JsonPoke" Version="1.2.0" PrivateAssets="all" />
712
</ItemGroup>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<Project>
2+
3+
<PropertyGroup>
4+
<_ImportProjectExtensionProps>$(ImportProjectExtensionProps)</_ImportProjectExtensionProps>
5+
<_ImportProjectExtensionTargets>$(ImportProjectExtensionTargets)</_ImportProjectExtensionTargets>
6+
</PropertyGroup>
7+
8+
</Project>

src/SmallSharp/SmallSharp.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,12 @@
3232
<ItemGroup>
3333
<None Include="..\_._" PackFolder="lib\netstandard2.0" Visible="false" />
3434
<None Update="SmallSharp.targets" PackFolder="$(PackFolder)" CopyToOutputDirectory="PreserveNewest" />
35+
<None Update="SmallSharp.Before.targets" PackFolder="$(PackFolder)" CopyToOutputDirectory="PreserveNewest" />
3536
<None Update="Sdk.props;Sdk.targets" PackFolder="Sdk" CopyToOutputDirectory="PreserveNewest" />
3637
</ItemGroup>
3738

3839
<ItemGroup>
39-
<UpToDateCheckInput Include="SmallSharp.targets;Sdk.props;Sdk.targets" />
40+
<UpToDateCheckInput Include="SmallSharp.targets;SmallSharp.Before.targets;Sdk.props;Sdk.targets" />
4041
</ItemGroup>
4142

4243
</Project>

src/SmallSharp/SmallSharp.props

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<Project>
22

33
<PropertyGroup>
4-
<!-- We emit Directory.Packages.props for #:package references -->
5-
<!--<CentralPackageFloatingVersionsEnabled>true</CentralPackageFloatingVersionsEnabled>
6-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>-->
74
<!-- This disables compilation error in VS for #: prefix -->
85
<Features Condition="'$(MSBuildIsRestoring)' != 'true'">$(Features);FileBasedProgram</Features>
9-
</PropertyGroup>
6+
7+
<!-- Capture project-level properties before they are defaulted by Microsoft.Common.targets -->
8+
<CustomBeforeMicrosoftCSharpTargets>$(MSBuildThisFileDirectory)\SmallSharp.Before.props</CustomBeforeMicrosoftCSharpTargets>
9+
</PropertyGroup>
1010

1111
</Project>

src/SmallSharp/SmallSharp.targets

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88
</UserProjectNamespace>
99
<StartupFile>$(ActiveDebugProfile)</StartupFile>
1010
<StartupFile Condition="'$(ActiveDebugProfile)' == '' or !Exists('$(ActiveDebugProfile)')">$(ActiveCompile)</StartupFile>
11-
<StartupFileDependsOn>CollectStartupFile;SelectStartupFile;SelectTopLevelCompile;UpdateLaunchSettings;EmitTargets</StartupFileDependsOn>
12-
13-
<SmallSharpPackagesTargets>$(MSBuildProjectDirectory)\$(BaseIntermediateOutputPath)SmallSharp.targets</SmallSharpPackagesTargets>
11+
<StartupFileDependsOn>EnsureImportProjectExtensions;CollectStartupFile;SelectStartupFile;SelectTopLevelCompile;UpdateLaunchSettings;EmitTargets</StartupFileDependsOn>
12+
13+
<!-- For CLI dotnet run, users should set ImportProjectExtensionTargets=true -->
14+
<SmallSharpPackagesTargets>$(MSBuildProjectExtensionsPath)$(MSBuildProjectFile).smallsharp.targets</SmallSharpPackagesTargets>
1415
</PropertyGroup>
1516

1617
<ItemGroup>
@@ -30,6 +31,10 @@
3031

3132
<Target Name="StartupFile" BeforeTargets="BeforeCompile;CoreCompile;CompileDesignTime;CollectUpToDateCheckInputDesignTime" DependsOnTargets="$(StartupFileDependsOn)" />
3233

34+
<Target Name="EnsureImportProjectExtensions" Condition="'$(_ImportProjectExtensionProps)' != 'true' or '$(_ImportProjectExtensionTargets)' != 'true'">
35+
<Error Code="SCS01" Text="Setting ImportProjectExtensionProps and ImportProjectExtensionTargets project properties to 'true' is required by SmallSharp to support C# package and project directives." />
36+
</Target>
37+
3338
<Target Name="CollectStartupFile">
3439
<ItemGroup>
3540
<StartupFile Include="*$(DefaultLanguageSourceExtension)" />
@@ -162,8 +167,6 @@
162167
</EmitTargets>
163168
</Target>
164169

165-
<Import Project="$(SmallSharpPackagesTargets)" Condition="Exists('$(SmallSharpPackagesTargets)')" />
166-
167170
<UsingTask TaskName="SortItems" TaskFactory="RoslynCodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
168171
<ParameterGroup>
169172
<!-- ITaskItem[] input and sorted output -->

0 commit comments

Comments
 (0)