Create yaml pipeline
Stages: - Build - Tests - Compliance - Package
This commit is contained in:
Родитель
5ff57b761c
Коммит
6e1caacba8
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<config>
|
||||
<add key="repositoryPath" value=".nuget\packages" />
|
||||
</config>
|
||||
<packageSources>
|
||||
<clear />
|
||||
<add key="xvs" value="https://devdiv.pkgs.visualstudio.com/_packaging/xamarin-xvs/nuget/v3/index.json" />
|
||||
</packageSources>
|
||||
</configuration>
|
90
build.proj
90
build.proj
|
@ -1,90 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Daniel Cazzulino
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
-->
|
||||
<Project Sdk="CoreBuild/1.0.0-alpha" DefaultTargets="Rebuild" TreatAsLocalProperty="Configuration">
|
||||
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
|
||||
<PackageOutputPath Condition="'$(PackageOutputPath)' == ''">$(MSBuildProjectDirectory)\out</PackageOutputPath>
|
||||
<!-- Whether to verify and initialize the target nuget feed before pushing as necessary. -->
|
||||
<SleetInit>false</SleetInit>
|
||||
<CommonBuildProperties>Configuration=$(Configuration);PackageOutputPath=$(PackageOutputPath);GitSkipCache=true</CommonBuildProperties>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Sleet.Azure" Version="0.2.5" />
|
||||
<PackageReference Include="xunit.runner.msbuild" Version="2.3.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Solution Include="src\Hermes.sln" />
|
||||
<TestProject Include="src\Tests\Tests.csproj" />
|
||||
<TestProject Include="src\IntegrationTests\IntegrationTests.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="Rebuild" DependsOnTargets="Clean;Restore;Build" />
|
||||
|
||||
<Target Name="All" DependsOnTargets="Rebuild;Test" />
|
||||
|
||||
<!-- Clean solutions -->
|
||||
<Target Name="Clean">
|
||||
<Exec Command="rmdir $(PackageOutputPath) /S /Q" Condition="Exists('$(PackageOutputPath)')" />
|
||||
<!-- Remove all bin/obj recursively under /src -->
|
||||
<Exec Command='for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s/q "%%d"'
|
||||
WorkingDirectory='$(MSBuildThisFileDirectory)\src' />
|
||||
<Exec Command="rmdir src\.vs /S /Q" Condition="Exists('src\.vs')" />
|
||||
</Target>
|
||||
|
||||
<Target Name="Delete" DependsOnTargets="_SleetConfigCreate">
|
||||
<Error Condition="'$(PackageId)' == ''" Text="No PackageId was specified for the Delete operation." />
|
||||
<Exec Condition="'$(PackageVersion)' == ''" Command='"$(Sleet)" delete --id "$(PackageId)" -f -s feed -c $(_SleetConfig)' />
|
||||
<Exec Condition="'$(PackageVersion)' != ''" Command='"$(Sleet)" delete --id "$(PackageId)" --version $(PackageVersion) -f -s feed -c $(_SleetConfig)' />
|
||||
</Target>
|
||||
|
||||
<Target Name="_BeforeRestore" BeforeTargets="Restore" DependsOnTargets="Clean">
|
||||
<MakeDir Directories="$(TEMP)\packages" Condition="!Exists('$(TEMP)\packages')" />
|
||||
</Target>
|
||||
|
||||
<Target Name="_RestoreSolutions" AfterTargets="Restore">
|
||||
<MSBuild Projects="@(Solution)" Targets="Restore" />
|
||||
</Target>
|
||||
|
||||
<Target Name="_AddPackage" BeforeTargets="Push">
|
||||
<ItemGroup>
|
||||
<Package Include="$(PackageOutputPath)\*.nupkg" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<Target Name="Build">
|
||||
<MSBuild Projects="@(Solution)" Properties="$(CommonBuildProperties)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="Test">
|
||||
<MSBuild Projects="@(TestProject)" Properties="$(CommonBuildProperties)">
|
||||
<Output ItemName="TestAssembly" TaskParameter="TargetOutputs" />
|
||||
</MSBuild>
|
||||
|
||||
<xunit Assemblies="@(TestAssembly)" />
|
||||
</Target>
|
||||
</Project>
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"tool": "Credential Scanner",
|
||||
"suppressions": [
|
||||
{
|
||||
"file": "src\\IntegrationTests\\AuthenticationSpec.cs",
|
||||
"_justification": "Dummy credentials for testing purposes"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
<!-- Upper case must be used. All values will be compared only to the upper case strings -->
|
||||
<PoliCheckExclusions>
|
||||
</PoliCheckExclusions>
|
|
@ -0,0 +1,124 @@
|
|||
# Build Stage
|
||||
|
||||
stages:
|
||||
- stage: Build
|
||||
jobs:
|
||||
- job: Windows
|
||||
timeoutInMinutes: 10
|
||||
pool:
|
||||
name: $(WindowsPoolName)
|
||||
|
||||
steps:
|
||||
- checkout: self
|
||||
clean: true
|
||||
|
||||
- task: UseDotNet@2
|
||||
displayName: 'Use .Net Core SDK $(DotNetCoreVersion)'
|
||||
inputs:
|
||||
version: '$(DotNetCoreVersion)'
|
||||
condition: always()
|
||||
|
||||
- script: 'mkdir "$(Build.ArtifactStagingDirectory)\binlogs"'
|
||||
displayName: 'Create Logs Dir'
|
||||
condition: always()
|
||||
|
||||
# Ensure we clear bot-provided feeds, for reliability
|
||||
- powershell: |
|
||||
$configPath = "$(Build.SourcesDirectory)\NuGet.Config"
|
||||
[xml]$config = get-content $configPath
|
||||
$config.configuration.packageSources.PrependChild($config.CreateElement("clear"))
|
||||
$config.Save($configPath)
|
||||
displayName: 'Ensure Clean NuGet Sources'
|
||||
condition: always()
|
||||
|
||||
- task: NuGetCommand@2
|
||||
displayName: 'Restore Packages'
|
||||
inputs:
|
||||
restoreSolution: '$(Build.SourcesDirectory)/src/Hermes.sln'
|
||||
feedsToUse: config
|
||||
nugetConfigPath: '$(Build.SourcesDirectory)/NuGet.Config'
|
||||
condition: always()
|
||||
|
||||
- task: MSBuild@1
|
||||
displayName: 'Build Solution'
|
||||
inputs:
|
||||
solution: '$(Build.SourcesDirectory)/src/Hermes.sln'
|
||||
msbuildArguments: /t:Build /noautoresponse /bl:"$(Build.ArtifactStagingDirectory)\binlogs\build.binlog"
|
||||
condition: always()
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish Artifact: packages'
|
||||
inputs:
|
||||
PathtoPublish: '$(Build.SourcesDirectory)\pack'
|
||||
ArtifactName: packages
|
||||
continueOnError: true
|
||||
condition: always()
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish Artifact: unit-tests'
|
||||
inputs:
|
||||
PathtoPublish: '$(Build.SourcesDirectory)\src\Tests\bin\$(Configuration)'
|
||||
ArtifactName: unit-tests
|
||||
continueOnError: true
|
||||
condition: always()
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish Artifact: integration-tests'
|
||||
inputs:
|
||||
PathtoPublish: '$(Build.SourcesDirectory)\src\IntegrationTests\bin\$(Configuration)'
|
||||
ArtifactName: integration-tests
|
||||
continueOnError: true
|
||||
condition: always()
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish Artifact: logs'
|
||||
inputs:
|
||||
PathtoPublish: '$(Build.ArtifactStagingDirectory)\binlogs'
|
||||
ArtifactName: logs
|
||||
continueOnError: true
|
||||
condition: always()
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: 'Copy Symbols'
|
||||
inputs:
|
||||
SourceFolder: '$(Build.SourcesDirectory)/src/Server/bin/$(Configuration)'
|
||||
Contents: |
|
||||
**/System.Net.Mqtt.?(dll|pdb)
|
||||
**/System.Net.Mqtt.Server.?(dll|pdb)
|
||||
TargetFolder: '$(Build.ArtifactStagingDirectory)/Symbols'
|
||||
CleanTargetFolder: true
|
||||
FlattenFolders: true
|
||||
OverWrite: true # Check if we should copy to $(TargetFramework) subfolders instead
|
||||
condition: always()
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish Artifact: symbols'
|
||||
inputs:
|
||||
PathtoPublish: '$(Build.ArtifactStagingDirectory)/Symbols'
|
||||
ArtifactName: symbols
|
||||
condition: always()
|
||||
|
||||
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
|
||||
displayName: 'Component Governance'
|
||||
condition: and(succeeded(), eq(variables['Build.SourceBranch'], variables['MainBranch']))
|
||||
|
||||
- powershell: |
|
||||
$complianceEnabled = if ($env:COMPLIANCEENABLED) { $env:COMPLIANCEENABLED } else { '' }
|
||||
|
||||
if ($complianceEnabled -eq '') {
|
||||
$branch = '$(Build.SourceBranch)'
|
||||
$reason = '$(Build.Reason)'
|
||||
|
||||
if($branch -eq '$(MainBranch)' -or $reason -eq 'PullRequest') {
|
||||
$complianceEnabled = 'true'
|
||||
} else {
|
||||
$complianceEnabled = 'false'
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "Source Branch: $branch, Build Reason: $reason"
|
||||
Write-Host "Requires Compliance Stage: $complianceEnabled"
|
||||
Write-Host "##vso[task.setvariable variable=Xamarin.ComplianceEnabled;isOutput=true]$complianceEnabled"
|
||||
name: 'SetComplianceNeed'
|
||||
displayName: 'Evaluate Compliance Need'
|
||||
condition: always()
|
|
@ -0,0 +1,101 @@
|
|||
# Compliance Stage
|
||||
|
||||
stages:
|
||||
- stage : Compliance
|
||||
dependsOn: Build
|
||||
condition: eq(stageDependencies.Build.outputs['Windows.SetComplianceNeed.Xamarin.ComplianceEnabled'], 'true')
|
||||
jobs:
|
||||
- job: CodeAnalysis
|
||||
displayName: Security & Analysis
|
||||
pool: $(WindowsPoolName)
|
||||
timeoutInMinutes: 60
|
||||
cancelTimeoutInMinutes: 5
|
||||
steps:
|
||||
- checkout: self
|
||||
clean: true
|
||||
submodules: recursive
|
||||
- task: DownloadBuildArtifacts@0
|
||||
displayName: Download Symbols
|
||||
inputs:
|
||||
artifactName: symbols
|
||||
downloadPath: '$(Build.ArtifactStagingDirectory)'
|
||||
- task: AntiMalware@3
|
||||
displayName: Run AntiMalware Scan
|
||||
inputs:
|
||||
FileDirPath: $(System.DefaultWorkingDirectory)
|
||||
EnableServices: true
|
||||
continueOnError: true
|
||||
condition: succeededOrFailed()
|
||||
- task: BinSkim@3
|
||||
displayName: Run BinSkim Analysis
|
||||
inputs:
|
||||
InputType: Basic
|
||||
AnalyzeTarget: '$(Build.ArtifactStagingDirectory)\Symbols\*.dll'
|
||||
AnalyzeVerbose: true
|
||||
continueOnError: true
|
||||
condition: succeededOrFailed()
|
||||
- template: security\credscan\v2.yml@templates # from xamarin/yaml-templates repository
|
||||
parameters:
|
||||
suppressionsFile: $(System.DefaultWorkingDirectory)\build\CredScanSuppressions.json
|
||||
- template: security\policheck\v1.yml@templates # from xamarin/yaml-templates repository
|
||||
parameters:
|
||||
exclusionFile: $(System.DefaultWorkingDirectory)\build\PoliCheckExclusions.xml
|
||||
- task: CodeInspector@2
|
||||
displayName: Run Code Inspector Analysis
|
||||
inputs:
|
||||
ProductId: '$(System.TeamProjectId)'
|
||||
continueOnError: true
|
||||
condition: succeededOrFailed()
|
||||
- task: SdtReport@1
|
||||
displayName: Create Security Analysis Report
|
||||
inputs:
|
||||
AntiMalware: true
|
||||
BinSkim: true
|
||||
CredScan: true
|
||||
RoslynAnalyzers: true
|
||||
PoliCheck: true
|
||||
CodeInspector: true
|
||||
continueOnError: true
|
||||
condition: succeededOrFailed()
|
||||
- task: PublishSecurityAnalysisLogs@2
|
||||
displayName: Publish Security Analysis Logs
|
||||
inputs:
|
||||
ArtifactName: ComplianceLogs
|
||||
continueOnError: true
|
||||
condition: succeededOrFailed()
|
||||
- task: PostAnalysis@1
|
||||
displayName: Run Security Post Analysis
|
||||
inputs:
|
||||
AntiMalware: true
|
||||
BinSkim: true
|
||||
CredScan: true
|
||||
RoslynAnalyzers: true
|
||||
PoliCheck: true
|
||||
CodeInspector: true
|
||||
continueOnError: true
|
||||
condition: succeededOrFailed()
|
||||
- task: TSAUpload@1
|
||||
inputs:
|
||||
tsaVersion: 'TsaV2'
|
||||
codebase: 'NewOrUpdate'
|
||||
tsaEnvironment: 'PROD'
|
||||
codeBaseName: 'mqtt_main'
|
||||
notificationAlias: 'xvs@microsoft.com,maagno@microsoft.com'
|
||||
notifyAlwaysV2: false
|
||||
codeBaseAdmins: 'REDMOND\maagno;REDMOND\vsengxamarin'
|
||||
instanceUrlForTsaV2: 'DEVDIV'
|
||||
projectNameDEVDIV: 'DevDiv'
|
||||
areaPath: 'DevDiv\Xamarin Tools\XamarinVS\XMA'
|
||||
iterationPath: 'DevDiv\OneVS'
|
||||
uploadAPIScan: true
|
||||
uploadBinSkim: true
|
||||
uploadCredScan: true
|
||||
uploadFortifySCA: true
|
||||
uploadFxCop: true
|
||||
uploadModernCop: true
|
||||
uploadPoliCheck: true
|
||||
uploadPREfast: true
|
||||
uploadRoslyn: true
|
||||
uploadTSLint: true
|
||||
uploadAsync: true
|
||||
condition: succeededOrFailed()
|
|
@ -0,0 +1,37 @@
|
|||
# Upload Stage
|
||||
|
||||
stages:
|
||||
- stage : Package
|
||||
dependsOn:
|
||||
- Test
|
||||
- Compliance
|
||||
condition: and(succeeded(), eq(variables['Build.SourceBranch'], variables['MainBranch']))
|
||||
jobs:
|
||||
- job: Push
|
||||
displayName: Pack & Push
|
||||
timeoutInMinutes: 10
|
||||
pool:
|
||||
name: $(WindowsPoolName)
|
||||
steps:
|
||||
- checkout: self
|
||||
|
||||
- task: DownloadBuildArtifacts@0
|
||||
displayName: Download Packages
|
||||
inputs:
|
||||
artifactName: packages
|
||||
downloadPath: '$(Build.ArtifactStagingDirectory)'
|
||||
|
||||
- task: NuGetCommand@2
|
||||
displayName: 'NuGet Update'
|
||||
inputs:
|
||||
command: custom
|
||||
arguments: 'update -self'
|
||||
|
||||
- task: NuGetCommand@2
|
||||
displayName: Push Packages
|
||||
continueOnError: true
|
||||
inputs:
|
||||
command: push
|
||||
packagesToPush: '$(Build.ArtifactStagingDirectory)/packages/*.nupkg'
|
||||
nuGetFeedType: external
|
||||
publishFeedCredentials: '$(PackagesFeedCredentials)'
|
|
@ -0,0 +1,57 @@
|
|||
# Test Stage
|
||||
|
||||
stages:
|
||||
- stage: Test
|
||||
dependsOn: Build
|
||||
jobs:
|
||||
- job: Unit
|
||||
timeoutInMinutes: 10
|
||||
pool:
|
||||
name: $(WindowsPoolName)
|
||||
|
||||
steps:
|
||||
- checkout: none
|
||||
|
||||
- task: DownloadBuildArtifacts@0
|
||||
inputs:
|
||||
artifactName: unit-tests
|
||||
|
||||
- task: VSTest@2
|
||||
displayName: 'Unit Tests'
|
||||
timeoutInMinutes: 10
|
||||
inputs:
|
||||
testSelector: 'testAssemblies'
|
||||
testAssemblyVer2: |
|
||||
**\Tests.dll
|
||||
searchFolder: '$(Build.ArtifactStagingDirectory)\unit-tests'
|
||||
testFiltercriteria: 'Flaky!=true'
|
||||
codeCoverageEnabled: true
|
||||
runInParallel: true
|
||||
rerunFailedTests: true
|
||||
rerunMaxAttempts: 5
|
||||
|
||||
- job: Integration
|
||||
timeoutInMinutes: 10
|
||||
pool:
|
||||
name: $(WindowsPoolName)
|
||||
|
||||
steps:
|
||||
- checkout: none
|
||||
|
||||
- task: DownloadBuildArtifacts@0
|
||||
inputs:
|
||||
artifactName: integration-tests
|
||||
|
||||
- task: VSTest@2
|
||||
displayName: 'Integration Tests'
|
||||
timeoutInMinutes: 10
|
||||
inputs:
|
||||
testSelector: 'testAssemblies'
|
||||
testAssemblyVer2: |
|
||||
**\IntegrationTests.dll
|
||||
searchFolder: '$(Build.ArtifactStagingDirectory)\integration-tests'
|
||||
codeCoverageEnabled: false
|
||||
diagnosticsEnabled: false
|
||||
runInParallel: false
|
||||
rerunFailedTests: true
|
||||
rerunMaxAttempts: 5
|
|
@ -0,0 +1,21 @@
|
|||
# Common Variables
|
||||
|
||||
variables:
|
||||
- group: Xamarin Release
|
||||
- group: Xamarin Signing
|
||||
- group: Xamarin Notarization
|
||||
- group: Xamarin-Secrets
|
||||
- group: xamops-azdev-secrets
|
||||
- group: akaxvs-secrets
|
||||
- name: MSBUILDDISABLENODEREUSE
|
||||
value: 1
|
||||
- name: VSS_NUGET_EXTERNAL_FEED_ENDPOINTS
|
||||
value: $(ExternalFeedEndpoints)
|
||||
- name: DotNetCoreVersion
|
||||
value: '3.1.102'
|
||||
- name: WindowsPoolName
|
||||
value: $(PoolName)
|
||||
- name: Configuration
|
||||
value: Release
|
||||
- name: MainBranch
|
||||
value: refs/heads/main
|
|
@ -0,0 +1,24 @@
|
|||
resources:
|
||||
repositories:
|
||||
- repository: templates
|
||||
type: github
|
||||
name: xamarin/yaml-templates
|
||||
ref: refs/heads/main
|
||||
endpoint: xamarin
|
||||
|
||||
trigger:
|
||||
batch: false
|
||||
branches:
|
||||
include:
|
||||
- main
|
||||
pr:
|
||||
- main
|
||||
|
||||
variables:
|
||||
- template: build/variables.yml
|
||||
|
||||
stages:
|
||||
- template: build/stages/build.yml
|
||||
- template: build/stages/compliance.yml
|
||||
- template: build/stages/test.yml
|
||||
- template: build/stages/push.yml
|
|
@ -1,14 +1,13 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net46;netstandard2.0</TargetFrameworks>
|
||||
<GeneratePackageOnBuild Condition="'$(Configuration)' == 'Release'">true</GeneratePackageOnBuild>
|
||||
|
||||
<AssemblyName>System.Net.Mqtt</AssemblyName>
|
||||
<RootNamespace>System.Net.Mqtt</RootNamespace>
|
||||
<PackageId>$(AssemblyName)</PackageId>
|
||||
<DocumentationFile>$(IntermediateOutputPath)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Label="NuGet">
|
||||
<PackageId>$(AssemblyName)</PackageId>
|
||||
<Description>A lightweight and simple MQTT client implementation written entirely in C#.</Description>
|
||||
</PropertyGroup>
|
||||
|
||||
|
@ -26,5 +25,4 @@
|
|||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -5,7 +5,7 @@
|
|||
<ThisAssemblyNamespace>System.Net.Mqtt</ThisAssemblyNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<PropertyGroup Label="NuGet">
|
||||
<Authors>Microsoft</Authors>
|
||||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
|
||||
<PackageLicenseUrl>https://raw.githubusercontent.com/xamarin/mqtt/main/LICENSE</PackageLicenseUrl>
|
||||
|
@ -14,13 +14,16 @@
|
|||
<Copyright>© Microsoft Corporation. All rights reserved.</Copyright>
|
||||
<PackageTags>m2m iot sockets mqtt</PackageTags>
|
||||
|
||||
<PackOnBuild Condition="'$(BuildingInsideVisualStudio)' != 'true'">true</PackOnBuild>
|
||||
<PackageOutputPath Condition="'$(PackOnBuild)' == 'true' And '$(PackageOutputPath)' == ''">$(MSBuildThisFileDirectory)..\pack</PackageOutputPath>
|
||||
|
||||
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
|
||||
<IncludeFrameworkReferencesInPackage>false</IncludeFrameworkReferencesInPackage>
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
<PropertyGroup>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)Hermes.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<PackageReference Include="System.Diagnostics.Tracer" Version="2.0.8" />
|
||||
<PackageReference Include="System.Runtime.Serialization.Primitives" Version="4.1.1" />
|
||||
<PackageReference Include="System.Reactive" Version="4.3.2" />
|
||||
<PackageReference Include="NuGetizer" Version="0.5.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(IncludeTesting)' == 'true'">
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net46;netstandard2.0</TargetFrameworks>
|
||||
<GeneratePackageOnBuild Condition="'$(Configuration)' == 'Release'">true</GeneratePackageOnBuild>
|
||||
|
||||
<AssemblyName>System.Net.Mqtt.Server</AssemblyName>
|
||||
<RootNamespace>System.Net.Mqtt.Server</RootNamespace>
|
||||
<PackageId>$(AssemblyName)</PackageId>
|
||||
<DocumentationFile>$(IntermediateOutputPath)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Label="NuGet">
|
||||
<PackageId>$(AssemblyName)</PackageId>
|
||||
<Description>A lightweight and simple MQTT Server implementation written entirely in C#.</Description>
|
||||
</PropertyGroup>
|
||||
|
||||
|
@ -22,5 +21,4 @@
|
|||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
Загрузка…
Ссылка в новой задаче