首页 > 解决方案 > Visual Studio 2017 不会创建中间清单文件

问题描述

我正在将一些大型解决方案文件(80 个项目)从 Visual Studio 2010 升级到 Visual Studio 2017。我允许 VS 升级解决方案和项目文件(它们都是 VC++ 项目)。

如果您转到项目的“链接器”设置,它们都已设置为生成中间清单。

中间清单设置

我以管理员身份运行 VS2017,对于我尝试构建的每个项目,我都会收到类似于以下内容的错误:

链接:致命错误 LNK1104:无法打开文件 'D:...\intel_win32_Debug\bundle_creator\bundle_creator.exe.intermediate.manifest'

这可以很好地在 VS2010 中构建项目。在 VS 2010 中,生成中间清单并将其提供给清单工具,然后构建项目。输出目录存在并且具有中间 .obj 文件以及 .pdb 文件。我还检查了目录权限和所有权,它们似乎是有序的。

调试/发布版本都会发生此错误。

有谁知道为什么这会在 2010 年有效,但在 2017 年无效?

编辑:链接器跟踪日志文件中没有内容。(而在 VS2017 中完成时很多)。这是一个示例项目文件。

编辑 2:我看到的一个巨大差异是,在 VS2010 案例中,我看到了 mt.ext 清单工具的跟踪日志,而在 2017 年我没有。因此,清单工具似乎由于某种原因没有运行。清单设置没有改变 - VS2017 中是否有一些设置可以在链接器之前运行清单工具?

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <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>
    <ProjectConfiguration Include="Template|Win32">
      <Configuration>Template</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
  </ItemGroup>
  <PropertyGroup Label="Globals">
    <ProjectGuid>{FAA8F144-2DE8-4397-B694-FDA2BF43E610}</ProjectGuid>
    <RootNamespace>bundle_creator</RootNamespace>
    <SccProjectName>
    </SccProjectName>
    <SccAuxPath>
    </SccAuxPath>
    <SccLocalPath>
    </SccLocalPath>
    <SccProvider>
    </SccProvider>
    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
    <ConfigurationType>Application</ConfigurationType>
    <UseOfMfc>false</UseOfMfc>
    <PlatformToolset>v141</PlatformToolset>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
    <ConfigurationType>Application</ConfigurationType>
    <UseOfMfc>false</UseOfMfc>
    <PlatformToolset>v141</PlatformToolset>
  </PropertyGroup>
  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
    <PlatformToolset>v141</PlatformToolset>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
  <ImportGroup Label="ExtensionSettings">
  </ImportGroup>
  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
    <Import Project="..\..\..\..\..\build\properties\release.props" />
  </ImportGroup>
  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
    <Import Project="..\..\..\..\..\build\properties\debug.props" />
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup>
    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
  </PropertyGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <ClCompile>
      <AdditionalIncludeDirectories>$(CORE_LIBRARIES_DIR)\3rdParty\zlib\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>CONSOLE_MODE;OMIT_CRYPTO_SUPPORT=t;OMIT_SYSTEM_VALUES=t;_CONSOLE;__BUILD_STATIC_APPLICATION__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>CONSOLE_MODE;OMIT_CRYPTO_SUPPORT=t;OMIT_SYSTEM_VALUES=t;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>$(CORE_LIBRARIES_DIR)\3rdparty\zlib\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <ClCompile>
      <AdditionalIncludeDirectories>$(CORE_LIBRARIES_DIR)\3rdparty\zlib\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>CONSOLE_MODE;OMIT_CRYPTO_SUPPORT=t;OMIT_SYSTEM_VALUES=t;_CONSOLE;__BUILD_STATIC_APPLICATION__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>CONSOLE_MODE;OMIT_CRYPTO_SUPPORT=t;OMIT_SYSTEM_VALUES=t;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>$(CORE_LIBRARIES_DIR)\3rdparty\zlib\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <SubSystem>Console</SubSystem>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup>
    <ClCompile Include="bundle_creator.cpp" />
    <ClCompile Include="common_bundle.cpp" />
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="bundler_version.rc" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\..\..\..\..\libraries\core\library\basis\basis.vcxproj">
      <Project>{571b0731-ed86-476a-a723-9ecf75cb0d51}</Project>
    </ProjectReference>
    <ProjectReference Include="..\..\..\build_prerequisites.csproj">
      <Project>{28ba1c03-7e39-4ce2-993f-72a7772fa758}</Project>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
  <ProjectExtensions>
    <VisualStudio>
      <UserProperties RESOURCE_FILE="bundler_version.rc" />
    </VisualStudio>
  </ProjectExtensions>
</Project>

这是调试属性表

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup Label="UserMacros">
    <REPOSITORY_DIR Condition="'$(REPOSITORY_DIR)'==''">$(SolutionDir)</REPOSITORY_DIR>
    <BUILDER_DIR>$(REPOSITORY_DIR)\..\..\build\</BUILDER_DIR>
    <BUILD_TOP>$(REPOSITORY_DIR)\..\..\</BUILD_TOP>
    <LIBRARIES_DIR>$(REPOSITORY_DIR)\..\..\libraries\</LIBRARIES_DIR>
    <CORE_LIBRARIES_DIR>$(REPOSITORY_DIR)\..\..\libraries\core\</CORE_LIBRARIES_DIR>
    <SHARED_LIBRARIES_DIR>$(REPOSITORY_DIR)\..\..\libraries\shared\</SHARED_LIBRARIES_DIR>
  </PropertyGroup>
  <PropertyGroup>
    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
    <OutDir>$(REPOSITORY_DIR)\binaries\</OutDir>
  </PropertyGroup>
  <ImportGroup Label="PropertySheets">
    <Import Project="$(BUILDER_DIR)\properties\vcoptions.props" />
  </ImportGroup>
  <ItemDefinitionGroup>
    <Midl>
      <PreprocessorDefinitions>DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <WholeProgramOptimization>false</WholeProgramOptimization>
      <PreprocessorDefinitions>_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>false</MinimalRebuild>
      <StringPooling>false</StringPooling>
      <FunctionLevelLinking>false</FunctionLevelLinking>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ResourceCompile>
    <Manifest>
      <AdditionalManifestFiles>$(IntDir)$(TargetFileName).intermediate.manifest;$(BUILDER_DIR)\properties\security_manifest.txt;%(AdditionalManifestFiles)</AdditionalManifestFiles>
    </Manifest>
    <Link>
      <AdditionalLibraryDirectories>$(REPOSITORY_DIR)\binaries;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ProgramDatabaseFile>$(REPOSITORY_DIR)\binaries\$(TargetName).pdb</ProgramDatabaseFile>
      <ImportLibrary>$(REPOSITORY_DIR)\binaries\$(ProjectName).lib</ImportLibrary>
<AdditionalDependencies>msvcrtd.lib;%(AdditionalDependencies)</AdditionalDependencies>
<IgnoreSpecificDefaultLibraries>msvcrt.lib;mfc.lib</IgnoreSpecificDefaultLibraries> 
    </Link>
  </ItemDefinitionGroup>
</Project>

标签: c++visual-studiomanifest

解决方案


推荐阅读