This commit is contained in:
wieslawsoltes 2018-12-09 12:48:11 +00:00
Родитель 71c6415960
Коммит 88dacbc838
32 изменённых файлов: 348 добавлений и 1194 удалений

0
.nuke Normal file
Просмотреть файл

Просмотреть файл

@ -2,15 +2,13 @@
[![Gitter](https://badges.gitter.im/wieslawsoltes/SimpleWavSplitter.svg)](https://gitter.im/wieslawsoltes/SimpleWavSplitter?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
[![Build status](https://ci.appveyor.com/api/projects/status/pfooqgyo9uwrj44o/branch/master?svg=true)](https://ci.appveyor.com/project/wieslawsoltes/simplewavsplitter/branch/master)
[![Build Status](https://dev.azure.com/wieslawsoltes/SimpleWavSplitter/_apis/build/status/wieslawsoltes.SimpleWavSplitter)](https://dev.azure.com/wieslawsoltes/SimpleWavSplitter/_build/latest?definitionId=1)
[![Build status](https://dev.azure.com/wieslawsoltes/SimpleWavSplitter/_apis/build/status/SimpleWavSplitter)](https://dev.azure.com/wieslawsoltes/SimpleWavSplitter/_build/latest?definitionId=-1)
[![NuGet](https://img.shields.io/nuget/v/WavFile.svg)](https://www.nuget.org/packages/WavFile)
[![MyGet](https://img.shields.io/myget/simplewavsplitter-nightly/vpre/WavFile.svg?label=myget)](https://www.myget.org/gallery/simplewavsplitter-nightly)
Split multi-channel WAV files into single channel WAV files.
* To run program please install .NET Framework Version 4.5
* To build program use Microsoft Visual C# 2017.
* Download are available at: https://github.com/wieslawsoltes/SimpleWavSplitter
@ -18,9 +16,8 @@ Split multi-channel WAV files into single channel WAV files.
| Platforn | Type | Version | Download |
|----------------------------------------|-------------|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Windows (GUI .NET4.5/WPF) | Portable | 0.3.4 | [SimpleWavSplitter.Wpf-Release-0.3.4.zip](https://github.com/wieslawsoltes/SimpleWavSplitter/releases/download/0.3.4/SimpleWavSplitter.Wpf-Release-0.3.4.zip) |
| Windows/Linux/OSX (GUI mono/Avalonia) | Portable | 0.3.4 | [SimpleWavSplitter.Avalonia-Release-0.3.4.zip](https://github.com/wieslawsoltes/SimpleWavSplitter/releases/download/0.3.4/SimpleWavSplitter.Avalonia-Release-0.3.4.zip) |
| Windows/Linux/OSX (Console mono/WPF) | Portable | 0.3.4 | [SimpleWavSplitter.Console-Release-0.3.4.zip](https://github.com/wieslawsoltes/SimpleWavSplitter/releases/download/0.3.4/SimpleWavSplitter.Console-Release-0.3.4.zip) |
| Windows/Linux/OSX (GUI) | Portable | 0.3.4 | [SimpleWavSplitter.Avalonia-Release-0.3.4.zip](https://github.com/wieslawsoltes/SimpleWavSplitter/releases/download/0.3.4/SimpleWavSplitter.Avalonia-Release-0.3.4.zip) |
| Windows/Linux/OSX (Console) | Portable | 0.3.4 | [SimpleWavSplitter.Console-Release-0.3.4.zip](https://github.com/wieslawsoltes/SimpleWavSplitter/releases/download/0.3.4/SimpleWavSplitter.Console-Release-0.3.4.zip) |
### Mirrors
@ -55,7 +52,6 @@ Does not require any external dependencies.
Please check first the sample apps and the [helper class](https://github.com/wieslawsoltes/SimpleWavSplitter/blob/master/src/WavFile/SimpleWavFileSplitter.cs).
* SimpleWavSplitter.Console
* SimpleWavSplitter.Wpf
* SimpleWavSplitter.Avalonia
### Split Wav Files

Просмотреть файл

@ -7,28 +7,16 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WavFile", "src\WavFile\WavF
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleWavSplitter.Console", "src\SimpleWavSplitter.Console\SimpleWavSplitter.Console.csproj", "{0DB24D15-3920-44C4-83FA-89D0F7565E42}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleWavSplitter.Wpf", "src\SimpleWavSplitter.Wpf\SimpleWavSplitter.Wpf.csproj", "{746BB582-59A3-409A-A9C9-53CCFC287D3F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleWavSplitter.Avalonia", "src\SimpleWavSplitter.Avalonia\SimpleWavSplitter.Avalonia.csproj", "{FFECA3C3-2785-4AAC-B9DE-5FA47415444F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{4E9F76C0-2C43-4BEC-91D3-9F76936EB77F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shared", "shared", "{D848C9FA-95C3-491C-A343-E5A1A9AD214C}"
ProjectSection(SolutionItems) = preProject
src\Shared\SharedAssemblyInfo.cs = src\Shared\SharedAssemblyInfo.cs
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{2C2B9DE5-D2CC-4464-8660-2D2F5590C396}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
build.cake = build.cake
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ci", "ci", "{6B224FC9-092D-4400-BD18-7CEBED0888D6}"
ProjectSection(SolutionItems) = preProject
_config.yml = _config.yml
appveyor.yml = appveyor.yml
azure-pipelines.yml = azure-pipelines.yml
.nuke = .nuke
build.ps1 = build.ps1
build.sh = build.sh
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "git", "git", "{993E4853-EF1E-4D37-8015-BEC79278A997}"
@ -46,7 +34,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "props", "props", "{335EB7D0
ProjectSection(SolutionItems) = preProject
build\Avalonia.Desktop.props = build\Avalonia.Desktop.props
build\Avalonia.props = build\Avalonia.props
build\NETCore.props = build\NETCore.props
build\Base.props = build\Base.props
build\EmbedXaml.props = build\EmbedXaml.props
build\Rx.props = build\Rx.props
build\System.IO.FileSystem.props = build\System.IO.FileSystem.props
EndProjectSection
@ -61,41 +50,21 @@ EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Mono = Debug|Mono
Release|Any CPU = Release|Any CPU
Release|Mono = Release|Mono
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{76465033-784D-46A6-929B-B4B35E7D422E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{76465033-784D-46A6-929B-B4B35E7D422E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{76465033-784D-46A6-929B-B4B35E7D422E}.Debug|Mono.ActiveCfg = Debug|Any CPU
{76465033-784D-46A6-929B-B4B35E7D422E}.Debug|Mono.Build.0 = Debug|Any CPU
{76465033-784D-46A6-929B-B4B35E7D422E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{76465033-784D-46A6-929B-B4B35E7D422E}.Release|Any CPU.Build.0 = Release|Any CPU
{76465033-784D-46A6-929B-B4B35E7D422E}.Release|Mono.ActiveCfg = Release|Any CPU
{76465033-784D-46A6-929B-B4B35E7D422E}.Release|Mono.Build.0 = Release|Any CPU
{0DB24D15-3920-44C4-83FA-89D0F7565E42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0DB24D15-3920-44C4-83FA-89D0F7565E42}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0DB24D15-3920-44C4-83FA-89D0F7565E42}.Debug|Mono.ActiveCfg = Debug|Any CPU
{0DB24D15-3920-44C4-83FA-89D0F7565E42}.Debug|Mono.Build.0 = Debug|Any CPU
{0DB24D15-3920-44C4-83FA-89D0F7565E42}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0DB24D15-3920-44C4-83FA-89D0F7565E42}.Release|Any CPU.Build.0 = Release|Any CPU
{0DB24D15-3920-44C4-83FA-89D0F7565E42}.Release|Mono.ActiveCfg = Release|Any CPU
{0DB24D15-3920-44C4-83FA-89D0F7565E42}.Release|Mono.Build.0 = Release|Any CPU
{746BB582-59A3-409A-A9C9-53CCFC287D3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{746BB582-59A3-409A-A9C9-53CCFC287D3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{746BB582-59A3-409A-A9C9-53CCFC287D3F}.Debug|Mono.ActiveCfg = Debug|Any CPU
{746BB582-59A3-409A-A9C9-53CCFC287D3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{746BB582-59A3-409A-A9C9-53CCFC287D3F}.Release|Any CPU.Build.0 = Release|Any CPU
{746BB582-59A3-409A-A9C9-53CCFC287D3F}.Release|Mono.ActiveCfg = Release|Any CPU
{FFECA3C3-2785-4AAC-B9DE-5FA47415444F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FFECA3C3-2785-4AAC-B9DE-5FA47415444F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FFECA3C3-2785-4AAC-B9DE-5FA47415444F}.Debug|Mono.ActiveCfg = Debug|Any CPU
{FFECA3C3-2785-4AAC-B9DE-5FA47415444F}.Debug|Mono.Build.0 = Debug|Any CPU
{FFECA3C3-2785-4AAC-B9DE-5FA47415444F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FFECA3C3-2785-4AAC-B9DE-5FA47415444F}.Release|Any CPU.Build.0 = Release|Any CPU
{FFECA3C3-2785-4AAC-B9DE-5FA47415444F}.Release|Mono.ActiveCfg = Release|Any CPU
{FFECA3C3-2785-4AAC-B9DE-5FA47415444F}.Release|Mono.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -103,9 +72,7 @@ Global
GlobalSection(NestedProjects) = preSolution
{76465033-784D-46A6-929B-B4B35E7D422E} = {4E9F76C0-2C43-4BEC-91D3-9F76936EB77F}
{0DB24D15-3920-44C4-83FA-89D0F7565E42} = {4E9F76C0-2C43-4BEC-91D3-9F76936EB77F}
{746BB582-59A3-409A-A9C9-53CCFC287D3F} = {4E9F76C0-2C43-4BEC-91D3-9F76936EB77F}
{FFECA3C3-2785-4AAC-B9DE-5FA47415444F} = {4E9F76C0-2C43-4BEC-91D3-9F76936EB77F}
{6B224FC9-092D-4400-BD18-7CEBED0888D6} = {2C2B9DE5-D2CC-4464-8660-2D2F5590C396}
{993E4853-EF1E-4D37-8015-BEC79278A997} = {2C2B9DE5-D2CC-4464-8660-2D2F5590C396}
{20652AD5-435B-4968-849C-67FE00090BB9} = {2C2B9DE5-D2CC-4464-8660-2D2F5590C396}
{335EB7D0-D585-4FC2-BDC9-451EA7780FF1} = {2C2B9DE5-D2CC-4464-8660-2D2F5590C396}

Просмотреть файл

@ -1,35 +0,0 @@
version: '{build}'
image: Visual Studio 2017
skip_branch_with_pr: true
platform: Any CPU
configuration: Release
environment:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
DOTNET_CLI_TELEMETRY_OPTOUT: 1
NUGET_API_KEY:
secure: iSkm19DNdKOLxxCvHiaKikWXy25ZMwGBKpv+EgEprliGl0qX5HtKohLmwJsLnx5O
NUGET_API_URL: https://www.nuget.org/api/v2/package
MYGET_API_KEY:
secure: xhYvrWYPHdNI+mQD+f4Zu3baL7fqW+nO/hYXJdN070Lej8wpa6gfrLi1NGtnQlAs
MYGET_API_URL: https://www.myget.org/F/simplewavsplitter-nightly/api/v2/package
install:
- if not exist dotnet-sdk-2.1.401-win-x64.exe appveyor DownloadFile https://download.microsoft.com/download/E/8/A/E8AF2EE0-5DDA-4420-A395-D1A50EEFD83E/dotnet-sdk-2.1.401-win-x64.exe -FileName "dotnet-sdk-2.1.401-win-x64.exe"
- ps: Start-Process -FilePath "dotnet-sdk-2.1.401-win-x64.exe" -ArgumentList "/quiet" -Wait
- cmd: dotnet --info
- cmd: dotnet tool install -g Cake.Tool --version 0.30.0
before_build:
- cmd: git submodule update --init
build_script:
- cmd: dotnet cake build.cake -Target="AppVeyor" -Platform="%PLATFORM%" -Configuration="%CONFIGURATION%"
test: off
notifications:
- provider: Webhook
url: https://webhooks.gitter.im/e/d9a05a0b1fcbe768bbcd
method: POST
on_build_success: true
on_build_failure: true
on_build_status_changed: true
artifacts:
- path: artifacts\nuget\*.nupkg
cache:
- dotnet-sdk-2.1.401-win-x64.exe

Просмотреть файл

@ -1,49 +0,0 @@
jobs:
- job: Linux
pool:
vmImage: 'ubuntu-16.04'
steps:
- task: DotNetCoreInstaller@0
inputs:
version: '2.1.401'
- script: |
export COREHOST_TRACE=0
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
export DOTNET_CLI_TELEMETRY_OPTOUT=1
which dotnet
dotnet --info
dotnet tool install -g Cake.Tool --version 0.30.0
export PATH="$PATH:$HOME/.dotnet/tools"
dotnet cake build.cake -Target="Azure-Linux" -Platform="Any CPU" -Configuration="Release"
- job: macOS
pool:
vmImage: 'xcode9-macos10.13'
steps:
- task: DotNetCoreInstaller@0
inputs:
version: '2.1.401'
- script: |
export COREHOST_TRACE=0
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
export DOTNET_CLI_TELEMETRY_OPTOUT=1
which dotnet
dotnet --info
dotnet tool install -g Cake.Tool --version 0.30.0
export PATH="$PATH:$HOME/.dotnet/tools"
dotnet cake build.cake -Target="Azure-macOS" -Platform="Any CPU" -Configuration="Release"
- job: Windows
pool:
vmImage: 'vs2017-win2016'
steps:
- task: DotNetCoreInstaller@0
inputs:
version: '2.1.401'
- script: |
set COREHOST_TRACE=0
set DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
set DOTNET_CLI_TELEMETRY_OPTOUT=1
where dotnet
dotnet --info
dotnet tool install -g Cake.Tool --version 0.30.0
set PATH=%PATH%;%USERPROFILE%\.dotnet\tools
dotnet cake build.cake -Target="Azure-Windows" -Platform="Any CPU" -Configuration="Release"

Просмотреть файл

@ -1,452 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
// ADDINS
///////////////////////////////////////////////////////////////////////////////
#addin "nuget:?package=Polly&version=5.3.1"
#addin "nuget:?package=PackageReferenceEditor&version=0.0.3"
///////////////////////////////////////////////////////////////////////////////
// TOOLS
///////////////////////////////////////////////////////////////////////////////
#tool "nuget:?package=NuGet.CommandLine&version=4.3.0"
#tool "nuget:?package=xunit.runner.console&version=2.3.1"
///////////////////////////////////////////////////////////////////////////////
// USINGS
///////////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Linq;
using PackageReferenceEditor;
using Polly;
///////////////////////////////////////////////////////////////////////////////
// ARGUMENTS
///////////////////////////////////////////////////////////////////////////////
var target = Argument("target", "Default");
var platform = Argument("platform", "Any CPU");
var configuration = Argument("configuration", "Release");
///////////////////////////////////////////////////////////////////////////////
// CONFIGURATION
///////////////////////////////////////////////////////////////////////////////
var MainRepo = "wieslawsoltes/SimpleWavSplitter";
var MasterBranch = "master";
var AssemblyInfoPath = File("./src/Shared/SharedAssemblyInfo.cs");
var ReleasePlatform = "Any CPU";
var ReleaseConfiguration = "Release";
var MSBuildSolution = "./SimpleWavSplitter.sln";
var UnitTestsFramework = "net461";
///////////////////////////////////////////////////////////////////////////////
// .NET Core Projects
///////////////////////////////////////////////////////////////////////////////
var netCoreAppsRoot= "./src";
var netCoreApps = new string[] { "SimpleWavSplitter.Avalonia" };
var netCoreProjects = netCoreApps.Select(name =>
new {
Path = string.Format("{0}/{1}", netCoreAppsRoot, name),
Name = name,
Framework = XmlPeek(string.Format("{0}/{1}/{1}.csproj", netCoreAppsRoot, name), "//*[local-name()='TargetFramework']/text()"),
Runtimes = XmlPeek(string.Format("{0}/{1}/{1}.csproj", netCoreAppsRoot, name), "//*[local-name()='RuntimeIdentifiers']/text()").Split(';')
}).ToList();
///////////////////////////////////////////////////////////////////////////////
// .NET Core UnitTests
///////////////////////////////////////////////////////////////////////////////
var netCoreUnitTestsRoot= "./tests";
var netCoreUnitTests = new string[] {
};
var netCoreUnitTestsProjects = netCoreUnitTests.Select(name =>
new {
Name = name,
Path = string.Format("{0}/{1}", netCoreUnitTestsRoot, name),
File = string.Format("{0}/{1}/{1}.csproj", netCoreUnitTestsRoot, name)
}).ToList();
var netCoreUnitTestsFrameworks = new List<string>() { "netcoreapp2.0" };
if (IsRunningOnWindows())
{
netCoreUnitTestsFrameworks.Add("net461");
}
///////////////////////////////////////////////////////////////////////////////
// PARAMETERS
///////////////////////////////////////////////////////////////////////////////
var isPlatformAnyCPU = StringComparer.OrdinalIgnoreCase.Equals(platform, "Any CPU");
var isPlatformX86 = StringComparer.OrdinalIgnoreCase.Equals(platform, "x86");
var isPlatformX64 = StringComparer.OrdinalIgnoreCase.Equals(platform, "x64");
var isLocalBuild = BuildSystem.IsLocalBuild;
var isRunningOnUnix = IsRunningOnUnix();
var isRunningOnWindows = IsRunningOnWindows();
var isRunningOnAppVeyor = BuildSystem.AppVeyor.IsRunningOnAppVeyor;
var isPullRequest = BuildSystem.AppVeyor.Environment.PullRequest.IsPullRequest;
var isMainRepo = StringComparer.OrdinalIgnoreCase.Equals(MainRepo, BuildSystem.AppVeyor.Environment.Repository.Name);
var isMasterBranch = StringComparer.OrdinalIgnoreCase.Equals(MasterBranch, BuildSystem.AppVeyor.Environment.Repository.Branch);
var isTagged = BuildSystem.AppVeyor.Environment.Repository.Tag.IsTag
&& !string.IsNullOrWhiteSpace(BuildSystem.AppVeyor.Environment.Repository.Tag.Name);
var isReleasable = StringComparer.OrdinalIgnoreCase.Equals(ReleasePlatform, platform)
&& StringComparer.OrdinalIgnoreCase.Equals(ReleaseConfiguration, configuration);
var isMyGetRelease = !isTagged && isReleasable;
var isNuGetRelease = isTagged && isReleasable;
///////////////////////////////////////////////////////////////////////////////
// VERSION
///////////////////////////////////////////////////////////////////////////////
var version = ParseAssemblyInfo(AssemblyInfoPath).AssemblyVersion;
if (isRunningOnAppVeyor)
{
if (isTagged)
{
// Use Tag Name as version
version = BuildSystem.AppVeyor.Environment.Repository.Tag.Name;
}
else
{
// Use AssemblyVersion with Build as version
version += "-build" + EnvironmentVariable("APPVEYOR_BUILD_NUMBER") + "-alpha";
}
}
///////////////////////////////////////////////////////////////////////////////
// DIRECTORIES
///////////////////////////////////////////////////////////////////////////////
var artifactsDir = (DirectoryPath)Directory("./artifacts");
var testResultsDir = artifactsDir.Combine("test-results");
var nugetRoot = artifactsDir.Combine("nuget");
var dirSuffix = isPlatformAnyCPU ? configuration : platform + "/" + configuration;
var buildDirs =
GetDirectories("./src/**/bin/**") +
GetDirectories("./src/**/obj/**") +
GetDirectories("./samples/**/bin/**") +
GetDirectories("./samples/**/obj/**") +
GetDirectories("./tests/**/bin/**") +
GetDirectories("./tests/**/obj/**");
///////////////////////////////////////////////////////////////////////////////
// NUGET NUSPECS
///////////////////////////////////////////////////////////////////////////////
var result = Updater.FindReferences("./build", "*.props", new string[] { });
result.ValidateVersions();
Information("Setting NuGet package dependencies versions:");
var SystemIOFileSystem = result.GroupedReferences["System.IO.FileSystem"].FirstOrDefault().Version;
Information("Package: System.IO.FileSystem, version: {0}", SystemIOFileSystem);
var nuspecNuGetWavFile = new NuGetPackSettings()
{
Id = "WavFile",
Version = version,
Authors = new [] { "wieslawsoltes" },
Owners = new [] { "wieslawsoltes" },
LicenseUrl = new Uri("http://opensource.org/licenses/MIT"),
ProjectUrl = new Uri("https://github.com/wieslawsoltes/SimpleWavSplitter/"),
RequireLicenseAcceptance = false,
Symbols = false,
NoPackageAnalysis = true,
Description = "Split multi-channel WAV files into single channel WAV files.",
Copyright = "Copyright 2016",
Tags = new [] { "Wav", "Audio", "Splitter", "Multi-channel", "Managed", "C#" },
Dependencies = new []
{
// netstandard1.3
new NuSpecDependency { Id = "System.IO.FileSystem", TargetFramework = "netstandard1.3", Version = SystemIOFileSystem }
},
Files = new []
{
// netstandard1.3
new NuSpecContent { Source = "src/WavFile/bin/" + dirSuffix + "/netstandard1.3/" + "WavFile.dll", Target = "lib/netstandard1.3" },
new NuSpecContent { Source = "src/WavFile/bin/" + dirSuffix + "/netstandard1.3/" + "WavFile.xml", Target = "lib/netstandard1.3" },
// net45
new NuSpecContent { Source = "src/WavFile/bin/" + dirSuffix + "/net45/" + "WavFile.dll", Target = "lib/net45" },
new NuSpecContent { Source = "src/WavFile/bin/" + dirSuffix + "/net45/" + "WavFile.xml", Target = "lib/net45" }
},
BasePath = Directory("./"),
OutputDirectory = nugetRoot
};
var nuspecNuGetSettings = new List<NuGetPackSettings>();
nuspecNuGetSettings.Add(nuspecNuGetWavFile);
var nugetPackages = nuspecNuGetSettings.Select(nuspec => {
return nuspec.OutputDirectory.CombineWithFilePath(string.Concat(nuspec.Id, ".", nuspec.Version, ".nupkg"));
}).ToArray();
///////////////////////////////////////////////////////////////////////////////
// INFORMATION
///////////////////////////////////////////////////////////////////////////////
Information("Building version {0} of SimpleWavSplitter ({1}, {2}, {3}) using version {4} of Cake.",
version,
platform,
configuration,
target,
typeof(ICakeContext).Assembly.GetName().Version.ToString());
if (isRunningOnAppVeyor)
{
Information("Repository Name: " + BuildSystem.AppVeyor.Environment.Repository.Name);
Information("Repository Branch: " + BuildSystem.AppVeyor.Environment.Repository.Branch);
}
Information("Target: " + target);
Information("Platform: " + platform);
Information("Configuration: " + configuration);
Information("IsLocalBuild: " + isLocalBuild);
Information("IsRunningOnUnix: " + isRunningOnUnix);
Information("IsRunningOnWindows: " + isRunningOnWindows);
Information("IsRunningOnAppVeyor: " + isRunningOnAppVeyor);
Information("IsPullRequest: " + isPullRequest);
Information("IsMainRepo: " + isMainRepo);
Information("IsMasterBranch: " + isMasterBranch);
Information("IsTagged: " + isTagged);
Information("IsReleasable: " + isReleasable);
Information("IsMyGetRelease: " + isMyGetRelease);
Information("IsNuGetRelease: " + isNuGetRelease);
///////////////////////////////////////////////////////////////////////////////
// TASKS: VISUAL STUDIO
///////////////////////////////////////////////////////////////////////////////
Task("Clean")
.Does(() =>
{
CleanDirectories(buildDirs);
CleanDirectory(artifactsDir);
CleanDirectory(testResultsDir);
CleanDirectory(nugetRoot);
});
Task("Restore-NuGet-Packages")
.IsDependentOn("Clean")
.Does(() =>
{
var maxRetryCount = 5;
var toolTimeout = 1d;
Policy
.Handle<Exception>()
.Retry(maxRetryCount, (exception, retryCount, context) => {
if (retryCount == maxRetryCount)
{
throw exception;
}
else
{
Verbose("{0}", exception);
toolTimeout+=0.5;
}})
.Execute(()=> {
NuGetRestore(MSBuildSolution, new NuGetRestoreSettings {
ToolTimeout = TimeSpan.FromMinutes(toolTimeout)
});
});
});
Task("Build")
.IsDependentOn("Restore-NuGet-Packages")
.Does(() =>
{
MSBuild(MSBuildSolution, settings => {
settings.SetConfiguration(configuration);
settings.WithProperty("Platform", "\"" + platform + "\"");
settings.SetVerbosity(Verbosity.Minimal);
settings.SetMaxCpuCount(0);
});
});
Task("Run-Unit-Tests")
.IsDependentOn("Build")
.Does(() =>
{
if(!isRunningOnWindows)
return;
var assemblies = GetFiles("./tests/**/bin/" + dirSuffix + "/" + UnitTestsFramework + "/*.UnitTests.dll");
var settings = new XUnit2Settings {
ToolPath = (isPlatformAnyCPU || isPlatformX86) ?
Context.Tools.Resolve("xunit.console.x86.exe") :
Context.Tools.Resolve("xunit.console.exe"),
OutputDirectory = testResultsDir,
XmlReportV1 = true,
NoAppDomain = true,
Parallelism = ParallelismOption.None,
ShadowCopy = false
};
foreach (var assembly in assemblies)
{
XUnit2(assembly.FullPath, settings);
}
});
Task("Create-NuGet-Packages")
.IsDependentOn("Run-Unit-Tests")
.Does(() =>
{
foreach(var nuspec in nuspecNuGetSettings)
{
NuGetPack(nuspec);
}
});
Task("Publish-MyGet")
.IsDependentOn("Create-NuGet-Packages")
.WithCriteria(() => !isLocalBuild)
.WithCriteria(() => !isPullRequest)
.WithCriteria(() => isMainRepo)
.WithCriteria(() => isMasterBranch)
.WithCriteria(() => isMyGetRelease)
.Does(() =>
{
var apiKey = EnvironmentVariable("MYGET_API_KEY");
if(string.IsNullOrEmpty(apiKey))
{
throw new InvalidOperationException("Could not resolve MyGet API key.");
}
var apiUrl = EnvironmentVariable("MYGET_API_URL");
if(string.IsNullOrEmpty(apiUrl))
{
throw new InvalidOperationException("Could not resolve MyGet API url.");
}
foreach(var nupkg in nugetPackages)
{
NuGetPush(nupkg, new NuGetPushSettings {
Source = apiUrl,
ApiKey = apiKey
});
}
})
.OnError(exception =>
{
Information("Publish-MyGet Task failed, but continuing with next Task...");
});
Task("Publish-NuGet")
.IsDependentOn("Create-NuGet-Packages")
.WithCriteria(() => !isLocalBuild)
.WithCriteria(() => !isPullRequest)
.WithCriteria(() => isMainRepo)
.WithCriteria(() => isMasterBranch)
.WithCriteria(() => isNuGetRelease)
.Does(() =>
{
var apiKey = EnvironmentVariable("NUGET_API_KEY");
if(string.IsNullOrEmpty(apiKey))
{
throw new InvalidOperationException("Could not resolve NuGet API key.");
}
var apiUrl = EnvironmentVariable("NUGET_API_URL");
if(string.IsNullOrEmpty(apiUrl))
{
throw new InvalidOperationException("Could not resolve NuGet API url.");
}
foreach(var nupkg in nugetPackages)
{
NuGetPush(nupkg, new NuGetPushSettings {
ApiKey = apiKey,
Source = apiUrl
});
}
})
.OnError(exception =>
{
Information("Publish-NuGet Task failed, but continuing with next Task...");
});
///////////////////////////////////////////////////////////////////////////////
// TASKS: .NET Core
///////////////////////////////////////////////////////////////////////////////
Task("Restore-NetCore")
.IsDependentOn("Clean")
.Does(() =>
{
foreach (var project in netCoreProjects)
{
DotNetCoreRestore(project.Path);
}
});
Task("Run-Unit-Tests-NetCore")
.IsDependentOn("Clean")
.Does(() =>
{
foreach (var project in netCoreUnitTestsProjects)
{
DotNetCoreRestore(project.Path);
foreach(var framework in netCoreUnitTestsFrameworks)
{
Information("Running tests for: {0}, framework: {1}", project.Name, framework);
DotNetCoreTest(project.File, new DotNetCoreTestSettings {
Configuration = configuration,
Framework = framework
});
}
}
});
Task("Build-NetCore")
.IsDependentOn("Restore-NetCore")
.Does(() =>
{
foreach (var project in netCoreProjects)
{
Information("Building: {0}", project.Name);
DotNetCoreBuild(project.Path, new DotNetCoreBuildSettings {
Configuration = configuration,
MSBuildSettings = new DotNetCoreMSBuildSettings() {
MaxCpuCount = 0
}
});
}
});
///////////////////////////////////////////////////////////////////////////////
// TARGETS
///////////////////////////////////////////////////////////////////////////////
Task("Package")
.IsDependentOn("Create-NuGet-Packages");
Task("Default")
.IsDependentOn("Run-Unit-Tests");
Task("AppVeyor")
.IsDependentOn("Run-Unit-Tests-NetCore")
.IsDependentOn("Build-NetCore")
.IsDependentOn("Publish-MyGet")
.IsDependentOn("Publish-NuGet");
Task("Azure-Windows")
.IsDependentOn("Run-Unit-Tests-NetCore")
.IsDependentOn("Build-NetCore");
Task("Azure-macOS")
.IsDependentOn("Run-Unit-Tests-NetCore")
.IsDependentOn("Build-NetCore");
Task("Azure-Linux")
.IsDependentOn("Run-Unit-Tests-NetCore")
.IsDependentOn("Build-NetCore");
///////////////////////////////////////////////////////////////////////////////
// EXECUTE
///////////////////////////////////////////////////////////////////////////////
RunTarget(target);

69
build.ps1 Normal file
Просмотреть файл

@ -0,0 +1,69 @@
[CmdletBinding()]
Param(
#[switch]$CustomParam,
[Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
[string[]]$BuildArguments
)
Write-Output "Windows PowerShell $($Host.Version)"
Set-StrictMode -Version 2.0; $ErrorActionPreference = "Stop"; $ConfirmPreference = "None"; trap { exit 1 }
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
###########################################################################
# CONFIGURATION
###########################################################################
$BuildProjectFile = "$PSScriptRoot\build\build\_build.csproj"
$TempDirectory = "$PSScriptRoot\\.tmp"
$DotNetGlobalFile = "$PSScriptRoot\\global.json"
$DotNetInstallUrl = "https://raw.githubusercontent.com/dotnet/cli/master/scripts/obtain/dotnet-install.ps1"
$DotNetChannel = "Current"
$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = 1
$env:DOTNET_CLI_TELEMETRY_OPTOUT = 1
$env:NUGET_XMLDOC_MODE = "skip"
###########################################################################
# EXECUTION
###########################################################################
function ExecSafe([scriptblock] $cmd) {
& $cmd
if ($LASTEXITCODE) { exit $LASTEXITCODE }
}
# If global.json exists, load expected version
if (Test-Path $DotNetGlobalFile) {
$DotNetGlobal = $(Get-Content $DotNetGlobalFile | Out-String | ConvertFrom-Json)
if ($DotNetGlobal.PSObject.Properties["sdk"] -and $DotNetGlobal.sdk.PSObject.Properties["version"]) {
$DotNetVersion = $DotNetGlobal.sdk.version
}
}
# If dotnet is installed locally, and expected version is not set or installation matches the expected version
if ((Get-Command "dotnet" -ErrorAction SilentlyContinue) -ne $null -and `
(!(Test-Path variable:DotNetVersion) -or $(& dotnet --version) -eq $DotNetVersion)) {
$env:DOTNET_EXE = (Get-Command "dotnet").Path
}
else {
$DotNetDirectory = "$TempDirectory\dotnet-win"
$env:DOTNET_EXE = "$DotNetDirectory\dotnet.exe"
# Download install script
$DotNetInstallFile = "$TempDirectory\dotnet-install.ps1"
md -force $TempDirectory > $null
(New-Object System.Net.WebClient).DownloadFile($DotNetInstallUrl, $DotNetInstallFile)
# Install by channel or version
if (!(Test-Path variable:DotNetVersion)) {
ExecSafe { & $DotNetInstallFile -InstallDir $DotNetDirectory -Channel $DotNetChannel -NoPath }
} else {
ExecSafe { & $DotNetInstallFile -InstallDir $DotNetDirectory -Version $DotNetVersion -NoPath }
}
}
Write-Output "Microsoft (R) .NET Core SDK version $(& $env:DOTNET_EXE --version)"
ExecSafe { & $env:DOTNET_EXE run --project $BuildProjectFile -- $BuildArguments }

72
build.sh Normal file
Просмотреть файл

@ -0,0 +1,72 @@
#!/usr/bin/env bash
echo $(bash --version 2>&1 | head -n 1)
#CUSTOMPARAM=0
BUILD_ARGUMENTS=()
for i in "$@"; do
case $(echo $1 | awk '{print tolower($0)}') in
# -custom-param) CUSTOMPARAM=1;;
*) BUILD_ARGUMENTS+=("$1") ;;
esac
shift
done
set -eo pipefail
SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
###########################################################################
# CONFIGURATION
###########################################################################
BUILD_PROJECT_FILE="$SCRIPT_DIR/build/build/_build.csproj"
TEMP_DIRECTORY="$SCRIPT_DIR//.tmp"
DOTNET_GLOBAL_FILE="$SCRIPT_DIR//global.json"
DOTNET_INSTALL_URL="https://raw.githubusercontent.com/dotnet/cli/master/scripts/obtain/dotnet-install.sh"
DOTNET_CHANNEL="Current"
export DOTNET_CLI_TELEMETRY_OPTOUT=1
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
export NUGET_XMLDOC_MODE="skip"
###########################################################################
# EXECUTION
###########################################################################
function FirstJsonValue {
perl -nle 'print $1 if m{"'$1'": "([^"\-]+)",?}' <<< ${@:2}
}
# If global.json exists, load expected version
if [ -f "$DOTNET_GLOBAL_FILE" ]; then
DOTNET_VERSION=$(FirstJsonValue "version" $(cat "$DOTNET_GLOBAL_FILE"))
if [ "$DOTNET_VERSION" == "" ]; then
unset DOTNET_VERSION
fi
fi
# If dotnet is installed locally, and expected version is not set or installation matches the expected version
if [[ -x "$(command -v dotnet)" && (-z ${DOTNET_VERSION+x} || $(dotnet --version) == "$DOTNET_VERSION") ]]; then
export DOTNET_EXE="$(command -v dotnet)"
else
DOTNET_DIRECTORY="$TEMP_DIRECTORY/dotnet-unix"
export DOTNET_EXE="$DOTNET_DIRECTORY/dotnet"
# Download install script
DOTNET_INSTALL_FILE="$TEMP_DIRECTORY/dotnet-install.sh"
mkdir -p "$TEMP_DIRECTORY"
curl -Lsfo "$DOTNET_INSTALL_FILE" "$DOTNET_INSTALL_URL"
chmod +x "$DOTNET_INSTALL_FILE"
# Install by channel or version
if [ -z ${DOTNET_VERSION+x} ]; then
"$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --channel "$DOTNET_CHANNEL" --no-path
else
"$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --version "$DOTNET_VERSION" --no-path
fi
fi
echo "Microsoft (R) .NET Core SDK version $("$DOTNET_EXE" --version)"
"$DOTNET_EXE" run --project "$BUILD_PROJECT_FILE" -- ${BUILD_ARGUMENTS[@]}

11
build/Base.props Normal file
Просмотреть файл

@ -0,0 +1,11 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<VersionPrefix>0.5.0</VersionPrefix>
<VersionSuffix></VersionSuffix>
<Authors>Wiesław Šoltés</Authors>
<Company>Wiesław Šoltés</Company>
<Copyright>Copyright © Wiesław Šoltés 2018</Copyright>
<PackageLicenseUrl>https://github.com/wieslawsoltes/SimpleWavSplitter/blob/master/LICENSE.TXT</PackageLicenseUrl>
<PackageProjectUrl>https://github.com/wieslawsoltes/SimpleWavSplitter</PackageProjectUrl>
</PropertyGroup>
</Project>

11
build/EmbedXaml.props Normal file
Просмотреть файл

@ -0,0 +1,11 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Compile Update="**\*.xaml.cs">
<DependentUpon>%(Filename)</DependentUpon>
<SubType>Code</SubType>
</Compile>
<AvaloniaResource Include="**\*.xaml">
<SubType>Designer</SubType>
</AvaloniaResource>
</ItemGroup>
</Project>

Просмотреть файл

@ -1,6 +0,0 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<PackageReference Include="Microsoft.NETCore.Runtime.CoreCLR" Version="2.0.8" />
<PackageReference Include="Microsoft.NETCore.DotNetHostPolicy" Version="2.1.5" />
</ItemGroup>
</Project>

117
build/build/Build.cs Normal file
Просмотреть файл

@ -0,0 +1,117 @@
using System;
using System.Linq;
using Nuke.Common;
using Nuke.Common.Git;
using Nuke.Common.ProjectModel;
using Nuke.Common.Tools.DotNet;
using static Nuke.Common.EnvironmentInfo;
using static Nuke.Common.IO.FileSystemTasks;
using static Nuke.Common.IO.PathConstruction;
using static Nuke.Common.Tools.DotNet.DotNetTasks;
class Build : NukeBuild
{
public static int Main() => Execute<Build>(x => x.Compile);
[Solution("SimpleWavSplitter.sln")]
readonly Solution Solution;
[GitRepository]
readonly GitRepository GitRepository;
[Parameter("configuration")]
public string Configuration { get; set; }
[Parameter("version-suffix")]
public string VersionSuffix { get; set; }
[Parameter("publish-framework")]
public string PublishFramework { get; set; }
[Parameter("publish-runtime")]
public string PublishRuntime { get; set; }
[Parameter("publish-project")]
public string PublishProject { get; set; }
AbsolutePath SourceDirectory => RootDirectory / "src";
AbsolutePath TestsDirectory => RootDirectory / "tests";
AbsolutePath ArtifactsDirectory => RootDirectory / "artifacts";
protected override void OnBuildInitialized()
{
Configuration = Configuration ?? "Release";
VersionSuffix = VersionSuffix ?? "";
}
Target Clean => _ => _
.Executes(() =>
{
DeleteDirectories(GlobDirectories(SourceDirectory, "**/bin", "**/obj"));
DeleteDirectories(GlobDirectories(TestsDirectory, "**/bin", "**/obj"));
EnsureCleanDirectory(ArtifactsDirectory);
});
Target Restore => _ => _
.DependsOn(Clean)
.Executes(() =>
{
DotNetRestore(s => s
.SetProjectFile(Solution));
});
Target Compile => _ => _
.DependsOn(Restore)
.Executes(() =>
{
DotNetBuild(s => s
.SetProjectFile(Solution)
.SetConfiguration(Configuration)
.SetVersionSuffix(VersionSuffix)
.EnableNoRestore());
});
Target Test => _ => _
.DependsOn(Compile)
.Executes(() =>
{
DotNetTest(s => s
.SetProjectFile(Solution)
.SetConfiguration(Configuration)
.SetLogger("trx")
.SetResultsDirectory(ArtifactsDirectory / "TestResults")
.EnableNoBuild()
.EnableNoRestore());
});
Target Pack => _ => _
.DependsOn(Test)
.Executes(() =>
{
DotNetPack(s => s
.SetProject(Solution)
.SetConfiguration(Configuration)
.SetVersionSuffix(VersionSuffix)
.SetOutputDirectory(ArtifactsDirectory / "NuGet")
.EnableNoBuild()
.EnableNoRestore());
});
Target Publish => _ => _
.DependsOn(Test)
.Requires(() => PublishRuntime)
.Requires(() => PublishFramework)
.Requires(() => PublishProject)
.Executes(() =>
{
DotNetPublish(s => s
.SetProject(Solution.GetProject(PublishProject))
.SetConfiguration(Configuration)
.SetVersionSuffix(VersionSuffix)
.SetFramework(PublishFramework)
.SetRuntime(PublishRuntime)
.SetOutput(ArtifactsDirectory / "Publish" / PublishProject + "-" + PublishRuntime));
});
}

22
build/build/_build.csproj Normal file
Просмотреть файл

@ -0,0 +1,22 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<RootNamespace></RootNamespace>
<IsPackable>False</IsPackable>
<NoWarn>CS0649;CS0169</NoWarn>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Nuke.Common" Version="0.12.3" />
</ItemGroup>
<ItemGroup>
<NukeMetadata Include="**\*.json" Exclude="bin\**;obj\**" />
<NukeExternalFiles Include="**\*.*.ext" Exclude="bin\**;obj\**" />
<None Remove="*.ref;*.txt" />
</ItemGroup>
</Project>

Просмотреть файл

@ -1,10 +0,0 @@
// Copyright (c) Wiesław Šoltés. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System.Reflection;
[assembly: AssemblyCompany("Wiesław Šoltés")]
[assembly: AssemblyCopyright("Copyright © Wiesław Šoltés 2010-2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyVersion("0.4.0")]
[assembly: AssemblyFileVersion("0.4.0")]
[assembly: AssemblyInformationalVersion("0.4.0")]

Просмотреть файл

@ -1,12 +0,0 @@
// Copyright (c) Wiesław Šoltés. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("SimpleWavSplitter.Avalonia")]
[assembly: AssemblyDescription("Split multi-channel WAV files into single channel WAV files.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyProduct("SimpleWavSplitter.Avalonia")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("ffeca3c3-2785-4aac-b9de-5fa47415444f")]

Просмотреть файл

@ -1,34 +1,29 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
<RuntimeIdentifiers>win7-x64;ubuntu.14.04-x64;osx.10.12-x64</RuntimeIdentifiers>
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
<EnableDefaultCompileItems>False</EnableDefaultCompileItems>
<GenerateAssemblyInfo>False</GenerateAssemblyInfo>
<LangVersion>latest</LangVersion>
<IsPackable>False</IsPackable>
</PropertyGroup>
<PropertyGroup>
<Description>Split multi-channel WAV files into single channel WAV files.</Description>
<PackageTags>Wav;Audio;Splitter;Multi-channel;Managed;C#;Avalonia</PackageTags>
</PropertyGroup>
<Import Project="..\..\build\Base.props" />
<Import Project="..\..\build\Rx.props" />
<Import Project="..\..\build\Avalonia.props" />
<Import Project="..\..\build\Avalonia.Desktop.props" />
<ItemGroup>
<Compile Include="**\*.cs" Exclude="obj\**" />
</ItemGroup>
<ItemGroup>
<Compile Update="**\*.xaml.cs">
<DependentUpon>%(Filename)</DependentUpon>
<SubType>Code</SubType>
</Compile>
<EmbeddedResource Include="**\*.xaml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\Shared\SharedAssemblyInfo.cs" Link="Properties\SharedAssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildThisFileDirectory)..\..\build\NETCore.props" />
<Import Project="$(MSBuildThisFileDirectory)..\..\build\Rx.props" />
<Import Project="$(MSBuildThisFileDirectory)..\..\build\Avalonia.props" />
<Import Project="$(MSBuildThisFileDirectory)..\..\build\Avalonia.Desktop.props" />
<Import Project="..\..\build\EmbedXaml.props" />
<ItemGroup>
<ProjectReference Include="..\WavFile\WavFile.csproj" />

Просмотреть файл

@ -1,6 +0,0 @@
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>
</configuration>

Просмотреть файл

@ -1,12 +0,0 @@
// Copyright (c) Wiesław Šoltés. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("SimpleWavSplitter.Console")]
[assembly: AssemblyDescription("Split multi-channel WAV files into single channel WAV files.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyProduct("SimpleWavSplitter.Console")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("303d23dd-c234-4e0c-8cbc-4ab06c51702b")]

Просмотреть файл

@ -1,32 +1,25 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
<RuntimeIdentifiers>win7-x64;ubuntu.14.04-x64;osx.10.12-x64</RuntimeIdentifiers>
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
<EnableDefaultCompileItems>False</EnableDefaultCompileItems>
<GenerateAssemblyInfo>False</GenerateAssemblyInfo>
<LangVersion>latest</LangVersion>
<IsPackable>False</IsPackable>
</PropertyGroup>
<PropertyGroup>
<Description>Split multi-channel WAV files into single channel WAV files.</Description>
<PackageTags>Wav;Audio;Splitter;Multi-channel;Managed;C#</PackageTags>
</PropertyGroup>
<Import Project="..\..\build\Base.props" />
<ItemGroup>
<Compile Include="**\*.cs" Exclude="obj\**" />
</ItemGroup>
<ItemGroup>
<Compile Update="**\*.xaml.cs">
<DependentUpon>%(Filename)</DependentUpon>
<SubType>Code</SubType>
</Compile>
<EmbeddedResource Include="**\*.xaml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\Shared\SharedAssemblyInfo.cs" Link="Properties\SharedAssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildThisFileDirectory)..\..\build\NETCore.props" />
<ItemGroup>
<ProjectReference Include="..\WavFile\WavFile.csproj" />
</ItemGroup>

Просмотреть файл

@ -1,7 +0,0 @@
<!-- Copyright (c) Wiesław Šoltés. All rights reserved. -->
<!-- Licensed under the MIT license. See LICENSE file in the project root for full license information. -->
<Application x:Class="SimpleWavSplitter.Wpf.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
</Application>

Просмотреть файл

@ -1,13 +0,0 @@
// Copyright (c) Wiesław Šoltés. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System.Windows;
namespace SimpleWavSplitter.Wpf
{
/// <summary>
/// Main application.
/// </summary>
public partial class App : Application
{
}
}

Просмотреть файл

@ -1,32 +0,0 @@
<!-- Copyright (c) Wiesław Šoltés. All rights reserved. -->
<!-- Licensed under the MIT license. See LICENSE file in the project root for full license information. -->
<Window x:Class="SimpleWavSplitter.Wpf.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="SimpleWavSplitter"
Height="510" Width="700"
WindowStartupLocation="CenterScreen"
UseLayoutRounding="True" SnapsToDevicePixels="True"
TextOptions.TextFormattingMode="Display">
<Grid x:Name="layout">
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="120"/>
</Grid.ColumnDefinitions>
<Button x:Name="btnGetWavHeader" Content="Get WAV Header" Grid.Column="0" Margin="3" Grid.RowSpan="1"/>
<ProgressBar x:Name="progress" Grid.Column="1" Grid.Row="0" Grid.RowSpan="1" Margin="3" Minimum="0" Maximum="100"/>
<Button x:Name="btnCancel" Content="Cancel" Grid.Column="2" Margin="3" Grid.RowSpan="1"/>
<Button x:Name="btnSplitWavFiles" Content="Split WAV Files" Grid.Column="3" Margin="3" Grid.RowSpan="1"/>
<TextBlock Grid.Column="0" Grid.Row="1" Margin="3" Text="output path:" HorizontalAlignment="Right" VerticalAlignment="Center"/>
<TextBox x:Name="textOutputPath" Text="" VerticalContentAlignment="Center" Padding="3" Margin="3" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="1"/>
<Button x:Name="btnBrowseOutputPath" Content="..." Grid.Column="3" Grid.Row="1" Margin="3" Grid.RowSpan="1"/>
<TextBox x:Name="textOutput" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="4" Grid.RowSpan="1" Margin="3" Padding="3" FontSize="12" FontFamily="Consolas"/>
</Grid>
</Window>

Просмотреть файл

@ -1,87 +0,0 @@
// Copyright (c) Wiesław Šoltés. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System.Reflection;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Threading;
using Microsoft.Win32;
using WavFile;
namespace SimpleWavSplitter.Wpf
{
/// <summary>
/// Main window.
/// </summary>
public partial class MainWindow : Window
{
private SimpleWavFileSplitter _wavFileSplitter;
/// <summary>
/// Initializes the new instance of <see cref="MainWindow"/> class.
/// </summary>
public MainWindow()
{
InitializeComponent();
_wavFileSplitter = new SimpleWavFileSplitter();
var version = Assembly.GetExecutingAssembly().GetName().Version;
Title = string.Format("SimpleWavSplitter v{0}.{1}.{2}", version.Major, version.Minor, version.Build);
btnBrowseOutputPath.Click += (sender, e) => GetOutputPath();
btnGetWavHeader.Click += (sender, e) => GetWavHeader();
btnSplitWavFiles.Click += async (sender, e) => await SplitWavFiles();
btnCancel.Click += async (sender, e) => await _wavFileSplitter.CancelSplitWavFiles(
value => Dispatcher.Invoke(() => progress.Value = value));
}
private void GetOutputPath()
{
var dlg = new System.Windows.Forms.FolderBrowserDialog();
string text = textOutputPath.Text;
if (text.Length > 0)
{
dlg.SelectedPath = textOutputPath.Text;
}
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
textOutputPath.Text = dlg.SelectedPath;
}
}
private void GetWavHeader()
{
var dlg = new OpenFileDialog()
{
Filter = "WAV Files (*.wav)|*.wav|All Files (*.*)|*.*",
FilterIndex = 0,
Multiselect = true
};
if (dlg.ShowDialog() == true)
{
_wavFileSplitter.GetWavHeader(dlg.FileNames, text => textOutput.Text = text);
}
}
private async Task SplitWavFiles()
{
var dlg = new OpenFileDialog()
{
Filter = "WAV Files (*.wav)|*.wav|All Files (*.*)|*.*",
FilterIndex = 0,
Multiselect = true
};
if (dlg.ShowDialog() == true)
{
await _wavFileSplitter.SplitWavFiles(
dlg.FileNames,
textOutputPath.Text,
value => Dispatcher.Invoke(() => progress.Value = value),
text => Dispatcher.Invoke(() => textOutput.Text = text));
}
}
}
}

Просмотреть файл

@ -1,14 +0,0 @@
// Copyright (c) Wiesław Šoltés. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows;
[assembly: AssemblyTitle("SimpleWavSplitter.Wpf")]
[assembly: AssemblyDescription("Split multi-channel WAV files into single channel WAV files.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyProduct("SimpleWavSplitter.Wpf")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
[assembly: Guid("FBE97138-5D1E-4498-B32B-3449570C9634")]

Просмотреть файл

@ -1,63 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleWavSplitter.Wpf.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleWavSplitter.Wpf.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

Просмотреть файл

@ -1,117 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

Просмотреть файл

@ -1,26 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleWavSplitter.Wpf.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

Просмотреть файл

@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

Просмотреть файл

@ -1,144 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{746BB582-59A3-409A-A9C9-53CCFC287D3F}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SimpleWavSplitter.Wpf</RootNamespace>
<AssemblyName>SimpleWavSplitter.Wpf</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Compile Include="..\Shared\SharedAssemblyInfo.cs">
<Link>Properties\SharedAssemblyInfo.cs</Link>
</Compile>
<Page Include="MainWindow.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<None Include="app.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<AppDesigner Include="Properties\" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.0,Profile=Client">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4 Client Profile %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
<Visible>False</Visible>
<ProductName>Windows Installer 3.1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\WavFile\WavFile.csproj">
<Project>{76465033-784d-46a6-929b-b4b35e7d422e}</Project>
<Name>WavFile</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

Просмотреть файл

@ -1,3 +0,0 @@
<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>

Просмотреть файл

@ -1,12 +0,0 @@
// Copyright (c) Wiesław Šoltés. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("WavFile")]
[assembly: AssemblyDescription("Split multi-channel WAV files into single channel WAV files.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyProduct("WavFile")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("6b828b56-d237-4cb6-92c7-2398197521e9")]

Просмотреть файл

@ -1,17 +1,25 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard1.3;net45</TargetFrameworks>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
<OutputType>Library</OutputType>
<EnableDefaultCompileItems>False</EnableDefaultCompileItems>
<GenerateAssemblyInfo>False</GenerateAssemblyInfo>
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
<DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup>
<Description>Split multi-channel WAV files into single channel WAV files.</Description>
<PackageTags>Wav;Audio;Splitter;Multi-channel;Managed;C#</PackageTags>
</PropertyGroup>
<Import Project="..\..\build\Base.props" />
<ItemGroup>
<Compile Include="..\Shared\SharedAssemblyInfo.cs">
<Link>Properties\SharedAssemblyInfo.cs</Link>
</Compile>
<Compile Include="**\*.cs" Exclude="obj\**" />
</ItemGroup>
<Import Project="$(MSBuildThisFileDirectory)..\..\build\System.IO.FileSystem.props" />
<Import Project="..\..\build\System.IO.FileSystem.props" />
</Project>