.NET Core.csproj output path not working correctly

I am using Visual Studio 14 (VS 2015) Update 3, and I want to create a REST API based on .Net Core 1, using Kestrel as a server.

I want to use .csproj instead of the old .xproj to use MSBuild, as in other projects. For this, I used the textbook that they have .

The problem is that when I define "OutputPath" as "bin \ Debug" (for example, for Debug mode), Visual Studio creates the project and sets the build results to "bin \ Debug \\ bin \ Debug \ netcoreapp1". 0 \ win7-x64 ".

If I use .xproj and build, the results are stored in "bin \ Debug \ netcoreapp1.0", which is the expected behavior.

What's 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 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" ] } } 
+6
source share
1 answer

Use <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

0
source

Source: https://habr.com/ru/post/1012038/


All Articles