(我已更新标题,以反映我的新发现)
我刚刚将一系列项目从TFS2008移植到TFS2010,并遇到了一个特定项目的问题(实际上有几个:)。使用构建配置“Debug”进行编译时,一切都按预期工作。但是,在使用构建配置'Release'进行编译时,由于al.exe无法在'obj \ debug'中找到指定的文件,因此会出现链接器错误。
错误:
Task "AL" (TaskId:781)
...
ALINK : error AL1047: Error importing file 'c:\Builds\23\...\obj\Debug\someproject.exe' -- The system cannot find the file specified. [C:\Builds\23\...\Release\Sources\...\someproject.csproj]
The command exited with code 1. (TaskId:781)
Done executing task "AL" -- FAILED. (TaskId:781)
我已启用团队构建信息诊断日志记录,并找到以下变量:
IntermediateOutputPath = obj\Debug\
我的问题是,当我在发布配置下构建时,链接器为什么会在Debug文件夹中查找。我已经检查了解决方案和项目配置,并且在发布解决方案配置下没有“调试”配置。任何想法为什么会发生这种情况以及如何解决它?
提前致谢。
!!奖金信息
我在项目文件中有以下语句失败,确保如果未指定构建配置,它将被设置为Debug。
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
我尝试将其更改为默认版本,现在我的调试团队构建失败,而是指向obj \ release。因此,在编译项目时,似乎未指定构建配置。怎么会这样?
答案 0 :(得分:1)
发现问题。我必须为someproject.csproj项目文件中定义的发布目标显式设置构建配置。我插入了'Configuration = Release'这一行
<MSBuild ToolsVersion="3.5" Projects="$(SolutionRoot)\...someproject.csproj"
Properties="RunCodeAnalysis=false;
Configuration=Release;
ClrVersion=2.0.50727.0;
ApplicationVersion=$(VersionNumber);
UpdateUrl=$(DevtestUpdateUrl);
InstallUrl=$(DevtestInstallUrl);
IsWebBootstrapper=true;
PublishDir=$(DropLocation)\$(BuildNumber)\Publish\Update\;
SolutionDir=$(SolutionRoot)\Kl******\;
DeploymentConfiguration=devtest;
SignManifests=true;
ManifestCertificateThumbprint=23...23;"
Targets="PublishOnly" />