我有三个Visual Studio解决方案.第一个配置为构建为Release,另外两个设置为构建为Debug.
当运行一个简单的MSBuild脚本显式声明要构建的配置(Debug)时,第一个项目仍然构建为Release.
示例脚本:
<Target Name="Build">
<ItemGroup>
<ProjectToBuild Include="$(SolutionsPath)\Solution1.sln"/>
<ProjectToBuild Include="$(SolutionsPath)\Core\Solution2.sln"/>
<ProjectToBuild Include="$(SolutionsPath)\UI\Solution3.sln"/>
</ItemGroup>
<MSBuild Projects="@(ProjectToBuild)"
Targets="Rebuild"
Properties="Configuration=Debug;Platform=Any CPU"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以上的变体,如下所示,但我总是得到相同的结果.
<Target Name="Build">
<ItemGroup>
<ProjectToBuild Include="$(SolutionsPath)\Solution1.sln">
<Properties>Configuration=Debug</Properties>
</ProjectToBuild>
<ProjectToBuild Include="$(SolutionsPath)\Core\Solution2.sln">
<Properties>Configuration=Debug</Properties>
</ProjectToBuild>
<ProjectToBuild Include="$(SolutionsPath)\UI\Solution3.sln">
<Properties>Configuration=Debug</Properties>
</ProjectToBuild>
</ItemGroup>
<MSBuild Projects="@(ProjectToBuild)"
Targets="Rebuild"
Properties="Platform=Any CPU"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
我注意到有一个类似的问题,MSBuild任务 - 构建失败,因为一个解决方案是在发布而不是调试中构建的,但这是特定于TFS和Teambuild.我正在谈论纯MSBuild与从头开始创建的简单项目文件.
我该如何解决这个问题?
真.奇怪的.SHIZ.
当我执行TFS Team Build(with Remote Deploy)时,我在网页上的一些#if DEBUG 预处理程序指令代码不会被调用.当我手动 one-click deploy (remote deploy)的preprocessor directive代码工作.当我在本地调试时,代码也可以工作.
所以 - 问题看起来与我的配置设置有关Build Template(我想??).所以,这就是我所拥有的: -
alt text http://img256.imageshack.us/img256/4070/59603294.png
没什么太难的.那说... 请善待编译.在'DEBUG'模式下构建我的项目(读取:项目,不是解决方案).
我的代码如下: -
#if DEBUG
Log.Debug("We are in DEBUG mode.");
#else
Log.Debug("We are _NOT_ in DEBUG mode.");
#endif
Run Code Online (Sandbox Code Playgroud)
因此,当调用此代码(在某些aspx页面中)时,它会打印出"我们处于DEBUG模式".什么时候
但不是当我让TFS的持续整合开始时.
FML.
我试图看看它是否是CASING情况(即#if debug或#if Debug),但它仍然不起作用.
然后我甚至尝试明确地告诉MSBuild配置....
替代文字http://img294.imageshack.us/img294/9970/75495143.png
仍然没有爱.
哦..但这是工友!我ALSO有一些web.config文件转换
...你能猜出哪个文件被转换了?如果你猜对 …
我正在尝试使用包含解决方案文件和项目文件的TFS 2012构建定义.
构建运行时,解决方案无法构建.相反,我得到的警告如下:
F:\ Source\1\MyCode\src\MySolution.sln.metaproj:指定的解决方案配置"Release | AnyCPU"无效.请使用"配置和平台"属性指定有效的解决方案配置(例如,MSBuild.exe Solution.sln/p:Configuration = Debug/p:Platform ="Any CPU")或将这些属性留空以使用默认解决方案配置.
这是由于一个错误导致Visual Studio使用"Any CPU"作为解决方案文件的平台,而它使用"AnyCPU"作为项目文件.请参阅:http: //connect.microsoft.com/VisualStudio/feedback/details/503935/msbuild-inconsistent-platform-for-any-cpu-between-solution-and-project
有没有办法配置我的构建,以使这项工作尽管有问题?即,一种将特定平台值传递给特定sln构建命令同时将不同值传递给其他命令的方法?
msbuild ×2
asp.net ×1
debugging ×1
msbuild-task ×1
preprocessor ×1
tfs ×1
tfs2010 ×1
tfsbuild ×1