我目前正在编写一个msbuild脚本来构建我一直在努力的解决方案,以及运行其测试。在我的开发机器上,这可以按预期工作。但是,当我尝试在构建服务器上运行相同的构建脚本时,出现了几个故障。我跟踪了问题的根源,因为我的构建脚本似乎试图运行与我的应用程序关联的.exe文件。脚本执行过程中,该行放倒我了,因为它并不在我的dev的盒子运行该命令:为什么MSBuild尝试运行它正在构建的项目?
MSIAuthoring:
Building MSI
"C:\Program Files (x86)\Jenkins\workspace\Test Build\BuildArtifacts\MsiBuildTool.exe" "/MBSBUILD:MsiBuildTool"
我是相当新建立的脚本,但我的理解是,构建脚本不应该试图运行我的程序,除非我明确地告诉它这样做。有谁知道可能是什么原因造成的?
供参考,这是我的构建脚本:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="RunTests"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<BuildArtifactsDir Include="BuildArtifacts\"/>
<SolutionFile Include="MsiBuildTool.sln"/>
<NUnitConsole Include="C:\Program Files (x86)\NUnit 2.6.4\bin\nunit-console.exe"/>
<UnitTestsDll Include="BuildArtifacts\MsiBuildToolUnitTests.dll"/>
<TestResultsPath Include="BuildArtifacts\TestResults.xml"/>
</ItemGroup>
<PropertyGroup>
<Configuration Condition="'$(Configuration)' == ''">Release</Configuration>
<Platform Condition="'$(Platform)' == ''">Any CPU</Platform>
</PropertyGroup>
<Target Name="Init" DependsOnTargets="Clean">
<MakeDir Directories="@(BuildArtifactsDir)"/>
</Target>
<Target Name="Clean">
<RemoveDir Directories="@(BuildArtifactsDir)"/>
</Target>
<Target Name ="Compile" DependsOnTargets="Init">
<MSBuild Projects="@(SolutionFile)"
Targets ="Build"
Properties ="OutDir=%(BuildArtifactsDir.FullPath);Configuration=$(Configuration);Platform=$(Platform)"/>
</Target>
<Target Name="RunTests" DependsOnTargets="Compile">
<Exec Command='"@(NUnitConsole)" @(UnitTestsDll) /[email protected](TestResultsPath)'/>
</Target>
</Project>
更新: 通过输出一些挖后,我发现,“MSIAuthoring”的步骤是维克斯#库,我的结果使用。 https://wixsharp.codeplex.com/discussions/644609# 我通过删除这一行,我的.csproj文件禁用MSIAuthoring步:由于此线程描述
<Import Project="..\packages\WixSharp.1.0.22.3\build\WixSharp.targets" Condition="Exists('..\packages\WixSharp.1.0.22.3\build\WixSharp.targets')" />
启用诊断日志记录,你会看到。 –