Выходной каталог msbuild с vcxproj отличается от сборки MSVS

Я новичок в MSVS, и появилось требование написать одну исполняемую программу и одну DLL. У меня есть проект MSVS 2013 с файлом vcxproj для DLL, который я пытаюсь построить с помощью msbuild.

При запуске сборки из MSVS создается папка ${ROOT_PROJECT_FOLDER}/${PROJECT_NAME}/Release где хранятся журналы сборки. А также создает саму DLL с файлами exp, lib и pdb. Они расположены в ${ROOT_PROJECT_FOLDER}/Release,

Но когда я пытаюсь бежать

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe cryptoApiLib\cryptoApiLib.vcxproj /t:Build /p:PreferredToolArchitecture=x86 /p:Platform=Win32 /p:PlatformToolset=v120_xp /p:Configuration=Release /p:TargetFrameworkVersion=v3.5

из корневой папки проекта DLL попадает в ${ROOT_PROJECT_FOLDER}/${PROJECT_NAME}/Release, Мне нужно, чтобы это было создано в ${ROOT_PROJECT_FOLDER}/Release, Понятия не имею, что именно я делаю не так.

Вот часть файла vcxproj:

...
<ItemGroup Label="ProjectConfigurations">
    <ProjectConfiguration Include="Debug|Win32">
      <Configuration>Debug</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|Win32">
      <Configuration>Release</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
  </ItemGroup>
  <PropertyGroup Label="Globals">
    <ProjectGuid>{ECFFC1B0-5155-41C7-8C03-DD94EB590E3A}</ProjectGuid>
    <Keyword>Win32Proj</Keyword>
    <RootNamespace>cryptoApiLib</RootNamespace>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>v120_xp</PlatformToolset>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>v120</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
  <ImportGroup Label="ExtensionSettings">
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <LinkIncremental>true</LinkIncremental>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <LinkIncremental>false</LinkIncremental>
  </PropertyGroup>
  ...

И вот как я запускаю msbuild с vcxproj:

 C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe cryptoApiLib\cryptoApiLib.vcxproj /t:Build /p:PreferredToolArchitecture=x86 /p:Platform=Win32 /p:PlatformToolset=v120_xp /p:Configuration=Release /p:TargetFrameworkVersion=v3.5 

Любые предложения, пожалуйста?

1 ответ

Решение

Понятия не имею почему /p:OutDir Параметр не работал для меня с первой попытки. Обошли свойства проекта и пришли к идее передать его как параметр msbuild. И наконец-то все заработало. Теперь мой командный файл сборки выглядит так:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe cryptoApiLib\cryptoApiLib.vcxproj /t:Rebuild /p:PreferredToolArchitecture=x86 /p:Platform=Win32 /p:PlatformToolset=v120_xp /p:Configuration=Release /p:TargetFrameworkVersion=v3.5 /p:OutDir=%~dp0\Release

Надеюсь, поможет кто-то еще. Благодарю.

Другие вопросы по тегам