diff --git a/README.md b/README.md
index a9338a1..83b2c1d 100644
--- a/README.md
+++ b/README.md
@@ -47,10 +47,16 @@ Or pin the SDK version in `global.json`:
```
src/
- nanoFramework.Sdk/ SDK NuGet package (Sdk.props / Sdk.targets)
+ nanoFramework.NET.Sdk/ SDK NuGet package (Sdk.props / Sdk.targets)
nanoFramework.Tools.BuildTasks/ Custom MSBuild tasks (resource gen, binary output, etc.)
```
+## Tools
+
+The `dotnet nano` umbrella CLI and the `nano-migrate` project migrator (with the companion
+SDK-migration skill) live in the [nanoframework/nf-tools](https://github.com/nanoframework/nf-tools)
+repository, under `tools/nano` and `tools/migrate`.
+
## Development
```bash
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index eada5eb..3243f19 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -41,177 +41,207 @@ stages:
########################
- stage: Build
jobs:
- - job: Build_SDK
- pool:
- vmImage: 'windows-latest'
-
- variables:
- - group: sign-client-credentials
- - name: buildPlatform
- value: 'Any CPU'
- - name: buildConfiguration
- value: 'Release'
- - name: solution
- value: 'nanoFramework.NET.Sdk.sln'
-
- steps:
- - checkout: self
- submodules: true
- fetchDepth: 0
-
- - script: |
- git config --global user.email nanoframework@outlook.com
- git config --global user.name nfbot
- git config --global core.autocrlf true
- displayName: Setup git identity
-
- - template: install-nbgv-tool.yml@templates
-
- # waiting for project to be public to enable SonarCloud analysis
- # - task: SonarCloudPrepare@3
- # condition: >-
- # and(
- # succeeded(),
- # eq(variables['StartReleaseCandidate'], false),
- # not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v')),
- # not(${{ parameters.skipSonarCloudAnalysis }})
- # )
- # displayName: 'Prepare analysis on SonarCloud'
- # inputs:
- # SonarCloud: 'sonarcloud-$(System.TeamProject)'
- # organization: 'nanoframework'
- # scannerMode: 'dotnet'
- # projectKey: 'nanoframework_net-sdk'
- # extraProperties: |
- # sonar.exclusions=**/obj/**,**/*.dll
- # sonar.cs.vscoveragexml.reportsPaths=$(Agent.TempDirectory)/**/**.coverage
- # sonar.cs.vstest.reportsPaths=$(Agent.TempDirectory)/**/**.trx
- # sonar.scanner.skipJreProvisioning=true
-
- - template: install-nuget.yml@templates
-
- - task: DotNetCoreCLI@2
- displayName: Build
- inputs:
- command: 'build'
- projects: '$(solution)'
- arguments: '--configuration $(buildConfiguration) /p:PublicRelease=true'
-
- # waiting for project to be public to enable SonarCloud analysis
- # - task: SonarCloudAnalyze@3
- # condition: >-
- # and(
- # succeeded(),
- # eq(variables['StartReleaseCandidate'], false),
- # not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
- # )
- # displayName: 'Run Code Analysis'
- # continueOnError: true
-
- # waiting for project to be public to enable SonarCloud analysis
- # - task: SonarCloudPublish@3
- # condition: >-
- # and(
- # succeeded(),
- # eq(variables['StartReleaseCandidate'], false),
- # not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
- # )
- # displayName: 'Publish Quality Gate Result'
- # continueOnError: true
-
- - task: DotNetCoreCLI@2
- displayName: Install Sign Client CLI
- condition: >-
- and(
- succeeded(),
- eq(variables['StartReleaseCandidate'], false),
- not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
- )
- inputs:
- command: custom
- custom: tool
- arguments: install --tool-path . sign --version 0.9.1-beta.23530.1
-
- - pwsh: |
- .\sign code azure-key-vault `
- "**/nanoFramework.Tools.BuildTasks.*" `
- --base-directory "$(Build.SourcesDirectory)/nanoFramework.NET.Sdk/build/Release" `
- --description "$(Build.Repository.Name)" `
- --description-url "https://github.com/$(Build.Repository.Name)" `
- --azure-key-vault-tenant-id "$(SignTenantId)" `
- --azure-key-vault-client-id "$(SignClientId)" `
- --azure-key-vault-client-secret "$(SignClientSecret)" `
- --azure-key-vault-certificate "$(SignKeyVaultCertificate)" `
- --azure-key-vault-url "$(SignKeyVaultUrl)" `
- --timestamp-url http://timestamp.digicert.com
- displayName: Sign DLLs
- continueOnError: false
- condition: >-
- and(
- succeeded(),
- eq(variables['StartReleaseCandidate'], false),
- not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
- )
+ - job: Build_SDK
+ pool:
+ vmImage: 'windows-latest'
- - task: DotNetCoreCLI@2
- displayName: Pack
- inputs:
- command: 'pack'
- packagesToPack: '**/src/nanoFramework.NET.Sdk.csproj'
- versioningScheme: 'off'
- arguments: '--configuration $(buildConfiguration) /p:PublicRelease=true --output $(Build.ArtifactStagingDirectory)'
-
- - pwsh: |
- .\sign code azure-key-vault `
- "**/*.nupkg" `
- --base-directory "$(Build.ArtifactStagingDirectory)" `
- --description "$(Build.Repository.Name)" `
- --description-url "https://github.com/$(Build.Repository.Name)" `
- --azure-key-vault-tenant-id "$(SignTenantId)" `
- --azure-key-vault-client-id "$(SignClientId)" `
- --azure-key-vault-client-secret "$(SignClientSecret)" `
- --azure-key-vault-certificate "$(SignKeyVaultCertificate)" `
- --azure-key-vault-url "$(SignKeyVaultUrl)" `
- --timestamp-url http://timestamp.digicert.com
- displayName: Sign NuGet package
- continueOnError: true
- condition: >-
- and(
- succeeded(),
- eq(variables['StartReleaseCandidate'], false),
- not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
- )
+ variables:
+ - group: sign-client-credentials
+ - name: buildPlatform
+ value: 'Any CPU'
+ - name: buildConfiguration
+ value: 'Release'
+ - name: solution
+ value: 'nanoFramework.NET.Sdk.sln'
+
+ steps:
+ - checkout: self
+ submodules: true
+ fetchDepth: 0
+
+ - script: |
+ git config --global user.email nanoframework@outlook.com
+ git config --global user.name nfbot
+ git config --global core.autocrlf true
+ displayName: Setup git identity
+
+ - template: install-nbgv-tool.yml@templates
+
+ # waiting for project to be public to enable SonarCloud analysis
+ # - task: SonarCloudPrepare@3
+ # condition: >-
+ # and(
+ # succeeded(),
+ # eq(variables['StartReleaseCandidate'], false),
+ # not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v')),
+ # not(${{ parameters.skipSonarCloudAnalysis }})
+ # )
+ # displayName: 'Prepare analysis on SonarCloud'
+ # inputs:
+ # SonarCloud: 'sonarcloud-$(System.TeamProject)'
+ # organization: 'nanoframework'
+ # scannerMode: 'dotnet'
+ # projectKey: 'nanoframework_net-sdk'
+ # extraProperties: |
+ # sonar.exclusions=**/obj/**,**/*.dll
+ # sonar.cs.vscoveragexml.reportsPaths=$(Agent.TempDirectory)/**/**.coverage
+ # sonar.cs.vstest.reportsPaths=$(Agent.TempDirectory)/**/**.trx
+ # sonar.scanner.skipJreProvisioning=true
- - task: PublishPipelineArtifact@1
- displayName: Publish NuGet package
- inputs:
- targetPath: '$(Build.ArtifactStagingDirectory)'
- artifactName: 'NuGetPackage'
- artifactType: 'pipeline'
-
- - task: NuGetCommand@2
- condition: >-
- and(
- succeeded(),
- eq(variables['System.PullRequest.PullRequestId'], ''),
- not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')),
- eq(variables['StartReleaseCandidate'], false),
- not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
+ - template: install-nuget.yml@templates
+
+ - task: DotNetCoreCLI@2
+ displayName: Build
+ inputs:
+ command: 'build'
+ projects: '$(solution)'
+ arguments: '--configuration $(buildConfiguration) /p:PublicRelease=true'
+
+ # waiting for project to be public to enable SonarCloud analysis
+ # - task: SonarCloudAnalyze@3
+ # condition: >-
+ # and(
+ # succeeded(),
+ # eq(variables['StartReleaseCandidate'], false),
+ # not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
+ # )
+ # displayName: 'Run Code Analysis'
+ # continueOnError: true
+
+ # waiting for project to be public to enable SonarCloud analysis
+ # - task: SonarCloudPublish@3
+ # condition: >-
+ # and(
+ # succeeded(),
+ # eq(variables['StartReleaseCandidate'], false),
+ # not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
+ # )
+ # displayName: 'Publish Quality Gate Result'
+ # continueOnError: true
+
+ - task: DotNetCoreCLI@2
+ displayName: Install Sign Client CLI
+ condition: >-
+ and(
+ succeeded(),
+ eq(variables['StartReleaseCandidate'], false),
+ not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
+ )
+ inputs:
+ command: custom
+ custom: tool
+ arguments: install --tool-path . sign --version 0.9.1-beta.23530.1
+
+ - pwsh: |
+ .\sign code azure-key-vault `
+ "**/nanoFramework.Tools.BuildTasks.*" `
+ --base-directory "$(Build.SourcesDirectory)/nanoFramework.NET.Sdk/build/Release" `
+ --description "$(Build.Repository.Name)" `
+ --description-url "https://github.com/$(Build.Repository.Name)" `
+ --azure-key-vault-tenant-id "$(SignTenantId)" `
+ --azure-key-vault-client-id "$(SignClientId)" `
+ --azure-key-vault-client-secret "$(SignClientSecret)" `
+ --azure-key-vault-certificate "$(SignKeyVaultCertificate)" `
+ --azure-key-vault-url "$(SignKeyVaultUrl)" `
+ --timestamp-url http://timestamp.digicert.com
+ displayName: Sign DLLs
+ continueOnError: false
+ condition: >-
+ and(
+ succeeded(),
+ eq(variables['StartReleaseCandidate'], false),
+ not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
+ )
+
+ - task: DotNetCoreCLI@2
+ displayName: Pack
+ inputs:
+ command: 'pack'
+ packagesToPack: '**/src/nanoFramework.NET.Sdk.csproj'
+ versioningScheme: 'off'
+ arguments: '--configuration $(buildConfiguration) /p:PublicRelease=true --output $(Build.ArtifactStagingDirectory)'
+
+ - pwsh: |
+ .\sign code azure-key-vault `
+ "**/*.nupkg" `
+ --base-directory "$(Build.ArtifactStagingDirectory)" `
+ --description "$(Build.Repository.Name)" `
+ --description-url "https://github.com/$(Build.Repository.Name)" `
+ --azure-key-vault-tenant-id "$(SignTenantId)" `
+ --azure-key-vault-client-id "$(SignClientId)" `
+ --azure-key-vault-client-secret "$(SignClientSecret)" `
+ --azure-key-vault-certificate "$(SignKeyVaultCertificate)" `
+ --azure-key-vault-url "$(SignKeyVaultUrl)" `
+ --timestamp-url http://timestamp.digicert.com
+ displayName: Sign NuGet package
+ continueOnError: true
+ condition: >-
+ and(
+ succeeded(),
+ eq(variables['StartReleaseCandidate'], false),
+ not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
+ )
+
+ - task: PublishPipelineArtifact@1
+ displayName: Publish NuGet package
+ inputs:
+ targetPath: '$(Build.ArtifactStagingDirectory)'
+ artifactName: 'NuGetPackage'
+ artifactType: pipeline
+
+ - task: PowerShell@2
+ displayName: Create NuGet config for SmokeTest
+ inputs:
+ targetType: inline
+ script: |
+ $nugetConfig = @(
+ ''
+ ''
+ ' '
+ ' '
+ ' '
+ ' '
+ ' '
+ ''
)
- continueOnError: true
- displayName: Push NuGet package to NuGet
- inputs:
- command: push
- nuGetFeedType: external
- allowPackageConflicts: true
- packagesToPush: '$(Build.ArtifactStagingDirectory)/*.nupkg'
- publishFeedCredentials: 'NuGet-$(System.TeamProject)'
+ $nugetConfig | Set-Content -Path "$(Build.SourcesDirectory)/test/SmokeTest/NuGet.Azdo.Config"
+
+ - task: DotNetCoreCLI@2
+ displayName: Restore SmokeTest
+ inputs:
+ command: 'restore'
+ projects: 'test/SmokeTest/SmokeTest.csproj'
+ feedsToUse: 'config'
+ nugetConfigPath: '$(Build.SourcesDirectory)/test/SmokeTest/NuGet.Azdo.Config'
+ - task: DotNetCoreCLI@2
+ displayName: Build SmokeTest
+ inputs:
+ command: 'build'
+ projects: 'test/SmokeTest/SmokeTest.csproj'
+ arguments: '--configuration $(buildConfiguration) --no-restore'
+
+ - task: NuGetCommand@2
+ condition: >-
+ and(
+ succeeded(),
+ eq(variables['System.PullRequest.PullRequestId'], ''),
+ not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')),
+ eq(variables['StartReleaseCandidate'], false),
+ not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
+ )
+ continueOnError: true
+ displayName: Push NuGet package to NuGet
+ inputs:
+ command: push
+ nuGetFeedType: external
+ allowPackageConflicts: true
+ packagesToPush: '$(Build.ArtifactStagingDirectory)/*.nupkg'
+ publishFeedCredentials: 'NuGet-$(System.TeamProject)'
# report build failure to Discord
- stage: Report_Build_Failure
- dependsOn:
- - Build
+ dependsOn: Build
condition: failed('Build')
jobs:
diff --git a/src/nanoFramework.NET.Sdk/Sdk/Rules/NanoDebugger.xaml b/src/nanoFramework.NET.Sdk/Sdk/Rules/NanoDebugger.xaml
new file mode 100644
index 0000000..9482dc1
--- /dev/null
+++ b/src/nanoFramework.NET.Sdk/Sdk/Rules/NanoDebugger.xaml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/nanoFramework.NET.Sdk/Sdk/Sdk.props b/src/nanoFramework.NET.Sdk/Sdk/Sdk.props
index 5df4567..6fb2ede 100644
--- a/src/nanoFramework.NET.Sdk/Sdk/Sdk.props
+++ b/src/nanoFramework.NET.Sdk/Sdk/Sdk.props
@@ -1,31 +1,35 @@
- netnano1.0
-
-
- true
-
- net
-
-
- $(NoWarn);NU1701
+ full
@@ -34,7 +38,9 @@
-
+
+
+
<_NfSdkDir>$(MSBuildThisFileDirectory)
@@ -42,42 +48,10 @@
-
-
-
-
- .NETnanoFramework
- v1.0
- .NETnanoFramework,Version=$(TargetFrameworkVersion)
- .NET nanoFramework 1.0
- .NETnanoFramework,Version=$(TargetFrameworkVersion)
-
-
-
-
+
+
-
- 13.0
-
-
- true
- true
- false
-
-
- false
- true
-
-
- true
-
-
- <_TargetFrameworkDirectories>$(_NfSdkDir)
- <_FullFrameworkReferenceAssemblyPaths>$(_NfSdkDir)
-
+
@@ -90,47 +64,13 @@
true
-
-
-
-
-
-
-
-
-
-
- false
- false
-
-
-
-
- $(ProjectDir)Stubs
-
-
-
-
-
- 3.0.29
-
-
-
-
-
diff --git a/src/nanoFramework.NET.Sdk/Sdk/Sdk.targets b/src/nanoFramework.NET.Sdk/Sdk/Sdk.targets
index 27a0451..6ba18ce 100644
--- a/src/nanoFramework.NET.Sdk/Sdk/Sdk.targets
+++ b/src/nanoFramework.NET.Sdk/Sdk/Sdk.targets
@@ -1,17 +1,27 @@
-
+
+
+
+
- $(DefineConstants);NETNANO1_0
+ $(DefineConstants);NETNANO1_0;NANOFRAMEWORK_1_0
@@ -36,29 +46,6 @@
$(ProjectDir)coreAssembly.rsp
-
-
-
-
-
-
- true
- true
- true
- true
- true
-
-
- false
- false
- false
- false
- false
-
-
-
-
@@ -78,18 +65,19 @@
-
+
+
+
+
-
-
-
+
-
-
- $(TargetName)
- $(TargetName)
- $(NanoGenerateStubsDirectory)\$(NanoGenerateStubsRootName)
-
+
+
+
+
+
+
@@ -129,336 +117,4 @@
$(CommandLineArgsForDesignTimeEvaluation) -define:$(DefineConstants)
-
-
-
-
- <_NfSdkTasksDir Condition="'$(MSBuildRuntimeType)' == 'Core'">$(_NfSdkRoot)tasks\net8.0\
- <_NfSdkTasksDir Condition="'$(MSBuildRuntimeType)' != 'Core'">$(_NfSdkRoot)tasks\net472\
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_NfMdpTasksTFM Condition="'$(MSBuildRuntimeType)' == 'Core'">net6.0
- <_NfMdpTasksTFM Condition="'$(_NfMdpTasksTFM)' == ''">net472
-
- <_NfMdpTasksDir Condition="'$(NF_MDP_MSBUILDTASK_PATH)' == '' and '$(DisableNanoFrameworkMDP)' != 'true' and '$(PkgnanoFramework_Tools_MetadataProcessor_MsBuildTask)' != ''">$(PkgnanoFramework_Tools_MetadataProcessor_MsBuildTask)\lib\$(_NfMdpTasksTFM)\
- <_NfMdpTasksDir Condition="'$(NF_MDP_MSBUILDTASK_PATH)' != ''">$(NF_MDP_MSBUILDTASK_PATH)\
-
-
-
-
-
-
-
-
- $(StartProgram)
- $(ProjectDir)$(IntermediateOutputPath)$(TargetName)
- $(OutDir)$(TargetName)
-
-
-
-
-
-
- Compile;CopyToOutDir
-
-
- BuildOnlySettings;
- PrepareForBuild;
- PreBuildEvent;
- ResolveReferences;
- PrepareResources;
- ResolveKeySource;
- Compile;
- GenerateSerializationAssemblies;
- CreateSatelliteAssemblies;
- GetTargetPath;
- PrepareForRun;
- IncrementalClean;
- MetaDataProcessor;
- PostBuildEvent
-
-
-
- MetaDataProcessor;
- CopyFilesToOutputDirectory;
- CopyNanoFrameworkFiles;
- CopyBackNanoFrameworkDlls
-
-
-
- PrepareResourceNames;
- ResGen;
- CompileLicxFiles;
- NanoResourceGenerator
-
-
-
- BeforeResolveReferences;
- ResolveProjectReferences;
- ResolveAssemblyReferences;
- ResolveRuntimeDependencies;
- AfterResolveReferences
-
-
-
-
-
-
-
- $(CoreBuildDependsOn);MetaDataProcessorCompile
- $(PrepareResourcesDependsOn);NanoResourceGenerator
- $(CleanDependsOn);NanoCLR_CleanExtraFiles
- $(ResolveReferencesDependsOn);ResolveRuntimeDependencies
- $(CoreBuildDependsOn);NFMDP_CreateDatabaseAndDependencyMap
- true
-
- $(ProjectDir)$(IntermediateOutputPath)$(TargetFileName)
- $(ProjectDir)$(IntermediateOutputPath)$(TargetName).pe
- $(ProjectDir)$(IntermediateOutputPath)$(TargetName)
- $(ProjectDir)$(IntermediateOutputPath)$(TargetName).strings
- $(ProjectDir)$(IntermediateOutputPath)$(TargetName)_exports.txt
- $(ProjectDir)$(IntermediateOutputPath)$(TargetName)_dependency_map.xml
- $(AssemblyName)
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(NanoGenerateSkeletonProjectName)
- $(NanoGenerateStubsRootName)
- $(NanoGenerateSkeletonFile)
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(NanoGenerateSkeletonProjectName)
- $(NanoGenerateStubsRootName)
- $(NanoGenerateSkeletonFile)
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/nanoFramework.NET.Sdk/Sdk/nanoFramework.Capabilities.targets b/src/nanoFramework.NET.Sdk/Sdk/nanoFramework.Capabilities.targets
new file mode 100644
index 0000000..e8a9851
--- /dev/null
+++ b/src/nanoFramework.NET.Sdk/Sdk/nanoFramework.Capabilities.targets
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
diff --git a/src/nanoFramework.NET.Sdk/Sdk/nanoFramework.Mdp.targets b/src/nanoFramework.NET.Sdk/Sdk/nanoFramework.Mdp.targets
new file mode 100644
index 0000000..0d20ba8
--- /dev/null
+++ b/src/nanoFramework.NET.Sdk/Sdk/nanoFramework.Mdp.targets
@@ -0,0 +1,410 @@
+
+
+
+
+
+
+
+ false
+ false
+
+
+
+
+ $(ProjectDir)Stubs
+
+
+
+
+
+
+ 4.0.0-preview.98
+
+
+
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+ true
+ true
+
+
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+
+
+
+ $(TargetName)
+ $(TargetName)
+ $(NanoGenerateStubsDirectory)\$(NanoGenerateStubsRootName)
+
+
+
+
+
+
+ <_NfSdkTasksDir Condition="'$(MSBuildRuntimeType)' == 'Core'">$(_NfSdkRoot)tasks\net8.0\
+ <_NfSdkTasksDir Condition="'$(MSBuildRuntimeType)' != 'Core'">$(_NfSdkRoot)tasks\net472\
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_NfMdpTasksTFM Condition="'$(MSBuildRuntimeType)' == 'Core'">net8.0
+ <_NfMdpTasksTFM Condition="'$(_NfMdpTasksTFM)' == ''">net472
+
+ <_NfMdpTasksDir Condition="'$(NF_MDP_MSBUILDTASK_PATH)' == '' and '$(DisableNanoFrameworkMDP)' != 'true' and '$(PkgnanoFramework_Tools_MetadataProcessor_MsBuildTask)' != ''">$(PkgnanoFramework_Tools_MetadataProcessor_MsBuildTask)\lib\$(_NfMdpTasksTFM)\
+ <_NfMdpTasksDir Condition="'$(NF_MDP_MSBUILDTASK_PATH)' != ''">$(NF_MDP_MSBUILDTASK_PATH)\
+
+
+
+
+
+
+
+
+ $(StartProgram)
+ $(ProjectDir)$(IntermediateOutputPath)$(TargetName)
+ $(OutDir)$(TargetName)
+
+
+
+
+
+
+ Compile;CopyToOutDir
+
+
+ BuildOnlySettings;
+ PrepareForBuild;
+ PreBuildEvent;
+ ResolveReferences;
+ PrepareResources;
+ ResolveKeySource;
+ Compile;
+ GenerateSerializationAssemblies;
+ CreateSatelliteAssemblies;
+ GetTargetPath;
+ PrepareForRun;
+ IncrementalClean;
+ MetaDataProcessor;
+ PostBuildEvent
+
+
+
+ MetaDataProcessor;
+ CopyFilesToOutputDirectory;
+ CopyNanoFrameworkFiles;
+ CopyBackNanoFrameworkDlls
+
+
+
+ PrepareResourceNames;
+ ResGen;
+ CompileLicxFiles;
+ NanoResourceGenerator
+
+
+
+ BeforeResolveReferences;
+ ResolveProjectReferences;
+ ResolveAssemblyReferences;
+ ResolveRuntimeDependencies;
+ AfterResolveReferences
+
+
+
+
+
+
+
+ $(CoreBuildDependsOn);MetaDataProcessorCompile
+ $(PrepareResourcesDependsOn);NanoResourceGenerator
+ $(CleanDependsOn);NanoCLR_CleanExtraFiles
+ $(ResolveReferencesDependsOn);ResolveRuntimeDependencies
+ $(CoreBuildDependsOn);NFMDP_CreateDatabaseAndDependencyMap
+ true
+
+ $(ProjectDir)$(IntermediateOutputPath)$(TargetFileName)
+ $(ProjectDir)$(IntermediateOutputPath)$(TargetName).pe
+ $(ProjectDir)$(IntermediateOutputPath)$(TargetName)
+ $(ProjectDir)$(IntermediateOutputPath)$(TargetName).strings
+ $(ProjectDir)$(IntermediateOutputPath)$(TargetName)_exports.txt
+ $(ProjectDir)$(IntermediateOutputPath)$(TargetName)_dependency_map.xml
+ $(AssemblyName)
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(NanoGenerateSkeletonProjectName)
+ $(NanoGenerateStubsRootName)
+ $(NanoGenerateSkeletonFile)
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(NanoGenerateSkeletonProjectName)
+ $(NanoGenerateStubsRootName)
+ $(NanoGenerateSkeletonFile)
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/nanoFramework.NET.Sdk/Sdk/nanoFramework.Tfm.props b/src/nanoFramework.NET.Sdk/Sdk/nanoFramework.Tfm.props
new file mode 100644
index 0000000..3696813
--- /dev/null
+++ b/src/nanoFramework.NET.Sdk/Sdk/nanoFramework.Tfm.props
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+ netnano1.0
+
+
+ true
+
+
+ net
+
+
+ $(NoWarn);NU1701
+
+
+
+
+
+
+
+ .NETnanoFramework
+ v1.0
+ .NETnanoFramework,Version=$(TargetFrameworkVersion)
+ .NET nanoFramework 1.0
+ .NETnanoFramework,Version=$(TargetFrameworkVersion)
+
+
+
+
+
+
+ 13.0
+
+
+ true
+ true
+ false
+
+
+ false
+ true
+
+
+ true
+
+
+ <_TargetFrameworkDirectories>$(_NfSdkDir)
+ <_FullFrameworkReferenceAssemblyPaths>$(_NfSdkDir)
+
+
+
diff --git a/src/nanoFramework.NET.Sdk/nanoFramework.NET.Sdk.csproj b/src/nanoFramework.NET.Sdk/nanoFramework.NET.Sdk.csproj
index 7f6b522..334a3c8 100644
--- a/src/nanoFramework.NET.Sdk/nanoFramework.NET.Sdk.csproj
+++ b/src/nanoFramework.NET.Sdk/nanoFramework.NET.Sdk.csproj
@@ -56,6 +56,11 @@
Sdk/
Sdk.props
Sdk.targets
+ nanoFramework.Tfm.props
+ nanoFramework.Mdp.targets
+ nanoFramework.Capabilities.targets
+ Rules/
+ NanoDebugger.xaml
tasks/
net472/
nanoFramework.Tools.BuildTasks.dll
@@ -73,10 +78,18 @@
\
-
+
+
+
+
+
+
+
+
+
diff --git a/src/nanoFramework.Tools.BuildTasks/nanoFramework.Tools.BuildTasks.csproj b/src/nanoFramework.Tools.BuildTasks/nanoFramework.Tools.BuildTasks.csproj
index 27ae288..9a1558e 100644
--- a/src/nanoFramework.Tools.BuildTasks/nanoFramework.Tools.BuildTasks.csproj
+++ b/src/nanoFramework.Tools.BuildTasks/nanoFramework.Tools.BuildTasks.csproj
@@ -9,8 +9,12 @@
-
-
+
+ compile; build; native; contentfiles; analyzers; buildtransitive
+
+
+ compile; build; native; contentfiles; analyzers; buildtransitive
+
diff --git a/test/SmokeTest/NuGet.Config b/test/SmokeTest/NuGet.Config
index c847b9c..1339017 100644
--- a/test/SmokeTest/NuGet.Config
+++ b/test/SmokeTest/NuGet.Config
@@ -2,7 +2,7 @@
-
+