I'm using Visual Studio 14 (VS 2015) Update 3 and I want to build a REST API based .Net Core 1, using Kestrel as the server.
I want to be able to use a .csproj instead of the old .xproj in order to use MSBuild as I do in other projects. To do so, I've used the tutorial they have.
The problem is that when I define "OutputPath" as "bin\Debug" (for Debug mode, for instance), Visual Studio builds the project and sets build's results to "bin\Debug\\bin\Debug\netcoreapp1.0\win7-x64".
If I use the .xproj and build, the results are stored at "bin\Debug\netcoreapp1.0", which is the expected behaviour.
What is happening?
.csproj:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
<BaseNuGetRuntimeIdentifier>win7</BaseNuGetRuntimeIdentifier>
<TargetFrameworkIdentifier>.NETCoreApp</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
<NoStdLib>true</NoStdLib>
<NoWarn>$(NoWarn);1701</NoWarn>
<ProjectGuid>{D21ABA46-65F9-4B47-882C-F9C0765052DD}</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>MyAPP</RootNamespace>
<AssemblyName>MyAPP</AssemblyName>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>x64</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<IntermediateOutputPath>.\obj\Debug</IntermediateOutputPath>
<OutputPath>.\bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>x64</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>.\bin\Release</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Compile Include="src\**\*.cs" />
</ItemGroup>
<ItemGroup>
<None Include="project.json" />
<None Include="appsettings.json" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\DotNet.Web\Microsoft.DotNet.Web.targets" Condition="'$(VSToolsPath)' != ''" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<!-- We don't use any of MSBuild's resolution logic for resolving the framework, so just set these two
properties to any folder that exists to skip the GetReferenceAssemblyPaths task (not target) and
to prevent it from outputting a warning (MSB3644).
-->
<_TargetFrameworkDirectories>$(MSBuildThisFileDirectory)</_TargetFrameworkDirectories>
<_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory)</_FullFrameworkReferenceAssemblyPaths>
<!-- MSBuild thinks all EXEs need binding redirects, not so for CoreCLR! -->
<AutoUnifyAssemblyReferences>true</AutoUnifyAssemblyReferences>
<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
<!-- Set up debug options to run with host, and to use the CoreCLR debug engine -->
<StartAction>Program</StartAction>
<StartProgram>$(TargetDir)</StartProgram>
<DebugEngines>{2E36F1D4-B23C-435D-AB41-18E608940038}</DebugEngines>
</PropertyGroup>
</Project>
project.json:
{
"version": "1.0.0",
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "build"
},
"Microsoft.ApplicationInsights.AspNetCore": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0"
},
"runtimes": {
"win7-x64": {},
"ubuntu.14.04-x64": {},
"osx.10.10-x64": {}
},
"frameworks": {
"netcoreapp1.0": {
"imports": [ "dnxcore50", "portable-net452" ]
}
},
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
"publishOptions": {
"include": [
"appsettings.json",
"web.config"
]
},
"scripts": {
"postpublish": [ "dotnet publish --publish-folder ./bin" ]
}
}
Use <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With