我已经使用MSBuild活动为TFS中的构建过程创建了自定义工作流。
由于某种原因,在输出文件夹中,我正在获取所有类库项目的配置文件。由于我只需要我实际构建的项目的应用程序配置文件,是否存在命令行参数来防止MSBuild在输出目录中创建[library] .dll.config文件?
我想在VS2013中单击项目的构建时运行目标.我尝试了几种方法,包括将项目的DefaultTargets更改为自定义项,然后让自定义目标调用我的目标,然后编译.但问题是它只能工作一次.如果我再次运行它,它似乎没有运行任何东西.
反正有没有这样做?
我正在尝试计划TFS服务器的构建定义,并且我遇到了一个问题/问题,我希望在继续之前澄清一下.
这是我们项目设置的简化版本,对不起我在这台机器上没有UML工具的粗糙:)

我想要完成的是正确的构建定义,以便:
我可能会使用gated check-ins来防止在构建中断时提交源代码控制.
已经有一段时间了,但我相信当时我有3个构建定义:
这在大多数情况下都有效,但如果在解决方案1和依赖解决方案IIRC上发生单一登记,则解决方案1将构建两次.
虽然这是一个不便,我不具备的数字出来,这将是很好知道如何做这正确的方法.
msbuild tfs continuous-integration build-definition build-dependencies
我试图找到一种方法来使用MSBuild压缩构建而不使用MSBuildCommunityTasks.我确实设法在线找到一些代码,但它似乎占用了所有文件,甚至是目录中的文件并将其放在一个文件中(没有目录).
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="Zip" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<InputFileNames ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
<OutputFileName ParameterType="System.String" Required="true" />
<OverwriteExistingFile ParameterType="System.Boolean" Required="false" />
</ParameterGroup>
<Task>
<Reference Include="System.IO.Compression" />
<Using Namespace="System.IO.Compression" />
<Code Type="Fragment" Language="cs">
<![CDATA[
const int BufferSize = 64 * 1024;
var buffer = new byte[BufferSize];
var fileMode = OverwriteExistingFile ? FileMode.Create : FileMode.CreateNew;
using (var outputFileStream = new FileStream(OutputFileName, fileMode))
{
using (var archive = new ZipArchive(outputFileStream, ZipArchiveMode.Create))
{
foreach (var inputFileName in InputFileNames.Select(f => f.ItemSpec)) …Run Code Online (Sandbox Code Playgroud)
我在我的*.wixproj文件中使用HeatDirectory任务,该文件在我的机器上工作得非常好,在本地构建.
但是,在TFS上,它失败并出现以下错误:
C:\ Program Files(x86)\ WiX Toolset v3.8\bin\Heat.exe dir D:\ Builds\32\48\bin\Debug\InstallSrc\WebApp\-cg CompGrp_WebApp -dr WebApp -ke -scom -sreg -srd -var var.WebAppSrc -v -ag -sfrag -suid -out WebApp_.wxs无法加载文件或程序集'file:/// C:\ Program Files(x86)\ WiX Toolset v3.8\bin\Heat .exe'或其依赖项之一.尝试加载格式不正确的程序.在System.Reflection.RuntimeAssembly上.nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark&stackMark,IntPtr pPrivHostBinder,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,Evidence assemblySecurity,RuntimeAssembly reqAssembly,StackCrawlMark&stackMark,在System.Reflection.RuntimeAssembly.InternalLoadFrom的System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,Evidence assemblySecurity,RuntimeAssembly reqAssembly,StackCrawlMark&stackMark,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)中的IntPtr pPrivHostBinder,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks) (String assemblyFile,Evidence securityEvidence,Byte [] hashValue,AssemblyHashAlgorithm hashAlgorithm,Boolean forIntrospection,Boolean suppressSecurityChecks,Stac kCrawlMark和stackMark)在System.Reflection.Assembly.LoadFrom(String assemblyFile)at Microsoft.Tools.WindowsInstallerXml.Build.Tasks.WixToolTask.ExecuteToolThread(Object parameters)0> MSBUILD:error MSB4166:子节点"3"过早退出.关机 诊断信息可以在名为MSBuild*.failure.txt 的临时文件目录中的文件中找到.
但是,在同一个构建机器上,我尝试执行热命令行(由上面的日志生成)并使其正常工作:即C:\ Program Files(x86)\ WiX Toolset v3.8\bin\Heat.exe目录D:\Builds\32\48\bin\Debug\InstallSrc\WebApp\-cg CompGrp_WebApp …
我们正在为我们的项目设置构建控制器.我们的项目依赖于最终用户机器上安装的另一个应用程序的DLL.除非必须,否则我不想在构建服务器上安装该应用程序.为此,我尝试将我需要的DLL放入自定义程序集文件夹中,但MSBuild无法从那里找到它们.
我可以将自定义程序集文件夹用于我的项目所需的任何DLL,还是仅用于构建过程需要的DLL?(即NUnit,StyleCop)
自从升级到Azure SDK 2.5以来,我们的CI构建失败了.我们在Visual Studio Online上有自动构建.
这是抛出的异常:
C:\ a\src\WebService\WebService.ccproj(82):导入的项目"C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v11.0\Windows Azure Tools\2.5\Microsoft.WindowsAzure.targets " 没找到.确认声明中的路径是否正确,以及该文件是否存在于磁盘上.
有任何想法吗?
我正在尝试从另一个解决方案引用一个C#DLL项目,但构建是在一个非常奇怪的输出文件夹中生成DLL.
目录内容是这样的:
c:\a\b\c\src\Solution.sln
c:\a\x\y\z\MyDLL\MyDLL.csproj
Run Code Online (Sandbox Code Playgroud)
在MyDLL.csproj不具有<OutputPath>标记.但它有一个我经常看不到的<SolutionDir>标签.
计算的输出路径,如Properties视图中所示,恰好是:
..\..\..\..\b\c\src-z\MyDLL\objd\i386
Run Code Online (Sandbox Code Playgroud)
这对应于此路径:
c:\a\b\c\src-z\src\MyDLL\objd\i386
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为我不知道配置src-z的任何东西.我想知道Visual Studio是否正在计算带连字符的路径?
我想解决这个问题,可能会改变<SolutionDir>,但我不想打破其他解决方案.
计算似乎在构建过程的早期发生,因为构建器记录的第一件事是:
1>Project 'MyDLL (x\y\z\MyDLL\MyDLL.csproj)' is not up to date.
Input file 'x\y\z\MyDLL\MyDLL.csproj' is modified after output
file 'c:\a\b\c\src-z\src\MyDLL\objd\i386\MyDLL.pdb'.
Run Code Online (Sandbox Code Playgroud)
那么,当找不到项目<OutputPath>标签时,VS使用什么算法来计算输出路径?
当我用声纳运行TFS 2013时,我收到以下错误: No ProjectInfo.xml files were found. Check that the analysis targets are referenced by the MSBuild projects being built.
信息: TF270015: 'SonarQube.MSBuild.Runner.exe' returned an unexpected exit code. Expected '0'; actual '1'.
我用 :
我已按照"SonarQube现有TFS环境安装指南.pdf"中的说明进行操作.
有帮助吗?
谢谢.
记录:
SonarQube Analysis Summary Analysis failed for SonarQube project "WpfApplication2", version 1.0 Product projects: 0, test projects: 0 Invalid projects: 0, skipped projects: 0, excluded projects: 0 Résumé Debug | x86 0 erreur(s), 1 avertissement(s) $/Essai2/WpfApplication2/WpfApplication2.sln - 0 erreur(s), …
我有一个Visual Studio项目,它在TeamCity中设置了一个构建任务,通过OctoPack(3.0.43)创建工件.接下来,部署任务,从构建任务任务(成功构建)接收输出NuGet包作为依赖项.
我已经尝试使用MsBuildbuild-runner和Visual Studio (sln)one 来设置构建任务,但在这两种情况下都没有创建工件.
我已将OctoPack NuGet包添加到我的Visual Studio项目中.