Tag: msbuild

从NuGet包实现StyleCop MSBUILD

一个快速的先兆,说我已经在论坛和网络上进行了一般性的搜索,我已经尝试了在这个论坛和其他地方发现的大量建议无济于事。 我遇到的问题是我的公司正在寻求使用StyleCop,ReSharper和JSLint(等等)等工具实现内部自动化同行评审(在某种程度上)。 我们正在使用针对我们内部NuGet包存储库(feed)的自定义NuGet包,以便我们的开发人员获得管理版本的工具(即,在它出现之前,它们无法下载最新的StyleCop,直到它被审查和发布),并添加了我们的自定义规则(StyleCop设置文件)。 因为我们希望使用StyleCop MSBUILD任务在构建时突出显示错误,所以StyleCop的程序集必须精确,因此我们排除了C:\ Program Files \版本的安装,转而支持NuGet版本。 我已经设法创建一个安装到项目(类库,网站等)的NuGet包,复制批准的StyleCop程序集(StyleCop.dll,StyleCop.CSharp.dll和StyleCop.CSharpRules.dll),Settings.StyleCop和StyleCop.Targets到包文件夹,并修改.csproj文件以包含以下节点(当然这只是一个片段): false 如果我将StyleCop安装为C:\ Program Files \并且在C:\ Program Files \ MSBUILD中,那么一切正常,但使用此方法,StyleCop.Targets似乎无法正常工作。 如果文件被删除并且它创建了一个StyleCop.Cache文件,它将被用作Visual Studio 2010引发错误。 StyleCop.Targets文件已更改为指向NuGet包文件夹中的本地DLL,我尝试了几个不同的.Targets文件,包括标准的StyleCop文件(相对文件路径更改)。 即使我在本地覆盖MSBUILD属性它也不起作用,例如OverrideSettingsFile。 StyleCop.Targets文件目前看起来像这样: $(BuildDependsOn);StyleCop StyleCopForceFullAnalysis;$(RebuildDependsOn) $(SourceAnalysisForceFullAnalysis) false $(SourceAnalysisCacheResults) true $(SourceAnalysisTreatErrorsAsWarnings) true $(SourceAnalysisEnabled) true $(SourceAnalysisOverrideSettingsFile) $(SourceAnalysisOutputFile) $(IntermediateOutputPath)StyleCopViolations.xml 0 有谁知道我怎么能这样工作? Visual Studio 2010不会在“输出”窗口中显示任何消息。 干得好!

MSbuild构建订单问题 – 首先构建预先构建步骤或首先依赖项目

我有一个项目A取决于项目B.项目A有一些预构建任务依赖于项目B中的一些生成的文件。当我在Visual Studio中构建时,没有问题。 但是当使用MSBuild.exe时,则存在问题,因为构建顺序是: A的预构建步骤< – 失败,因为B尚未编译 B编译< – 预计首先执行 A是编译的 这是使用MSBuild的预期行为吗? 有没有办法告诉MSBuild在A的预建步骤之前先做B? 我正在使用VS2010 C#和C ++ / CLI。 我不认为是否提供额外的信息,但这里是如何调用: Running process (C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBUILD.exe “..\..\..\dev\build\MyProj.sln” /t:Clean /p:Configuration=Release;Platform=Win32)

是否有Visual Studio Build Profiler?

我的VS.NET 2008解决方案需要更长的时间来编译(ASP.NET 3.5 + ASP.NET MVC 2 + C#),我想知道是否有办法知道哪个项目需要更长的时间来编译,为什么? 我禁用了一些项目的编译,它有助于减少构建时间,但我希望它更快。

如何强制MSBuild运行代码分析而不重新编译

默认情况下,代码分析仅针对已编译的项目进行。 因此,当我从命令行运行MSBuild时,它仅首次运行代码分析。 在后续调用中,将跳过代码分析。 背景:我想评估CA规则,并查看启用规则时代码中会有多少警告。 为此,我不想重新编译所有内容 – 这需要一些时间 – 但只需重新运行代码分析。 你怎么能实现这个目标? 我正在使用Visual Studio 2013和MSBuild 12.0。 即使明确地开启代码分析也无济于事: msbuild DesktopBuild.proj /p:RunCodeAnalysis=true

各种MSBuild版本属性(例如Version,VersionPrefix和VersionSuffix)之间有什么区别?

使用MSBuild 15和Microsoft.NET.Sdk构建项目允许用户指定六个版本属性。 它们之间的区别是什么,使用它们的正确方法是什么? 版 VersionPrefix VersionSuffix 的AssemblyVersion 文件版本 PackageVersion 为了清楚起见,我在谈论“属性”作为文件中定义的MSBuild属性(如下所示) 1.2.0 …或命令行为msbuild.exe /p:Version=1.2.0

问题使用具有多个配置的msbuild构建单个项目

问题 我们在解决方案中使用配置转换。 例如:调试,测试,暂存,发布但是,这些配置仅用于我们的MVC项目。 所有库只使用Debug和Release,这更有意义,因为我们的库只需要在调试模式或发布模式下构建。 尝试从命令行构建单个项目时会出现此问题。 我需要能够这样做才能将我们的构建从TeamCity自动部署到我们的测试环境。 当我像这样构建单个项目时 msbuild myproject.csproj /t:Build /P:Configuration=Test /P:Platform=AnyCPU /P:DeployOnBuild=True /P:DeployTarget=MSDeployPublish /P:MsDeployServiceUrl=https://SERVER:8172/MsDeploy.axd /P:AllowUntrustedCertificate=True /P:MSDeployPublishMethod=WMSvc /P:CreatePackageOnPublish=True /P:UserName=Username /P:Password=Passsword /P:DeployIisAppPath=”IISAPPPATH” 我收到以下错误 myproject.csproj“(构建目标)(1) – > “C:\ src \ myproject.csproj”(默认目标)(18) – > C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.Common.targets(483,9) :错误:没有为项目’sampleLibrary.csproj’设置OutputPath属性。 请检查以确保您指定了有效的组合 该项目的配置和平台。 配置=“测试” 平台= ‘AnyCPU’。 您可能会看到此消息,因为您正在尝试 在没有解决方案文件的情况下构建项目,并指定了一个 此项目不存在的非默认配置或平台。 我知道这意味着什么,因为我的sampleLibrary没有测试配置,sampleLibrary的映射将包含在我的.sln文件中 题 有没有办法解决这个问题,而无需为每个库项目添加这些配置? 它闻起来像一个丑陋的黑客在这里。

MSBuild vs devenv用于命令行构建

我想知道:从命令行编译解决方案时使用msbuild和devenv有什么区别? 一个显而易见的事情是,msbuild确实构建了未包含在解决方案中的依赖项目,而devenv则没有。 还有别的吗? 是否有一些特殊标志可以传递给msbuild以使其与devenv构建完全匹配? PS我正在使用Visual Studio 2010 SP1

看起来MSVS 11.0 Beta破坏了MSVS 10.0的安装

安装MSVS 11Beta后,我遇到了MSVS 10的编译问题。 现在,当我在MSVS 10中编译我的C#项目(在MSVS 10中创建的项目;目标框架:3.5)时,我在输出窗口中收到错误MSB4216 , MSB4028及以下文本: 1>Task “GenerateResource” skipped, due to false condition; (‘%(EmbeddedResource.Type)’ == ‘Resx’ and ‘%(EmbeddedResource.GenerateResource)’ != ‘false’ and ‘$(GenerateResourceMSBuildRuntime)’ != ‘CLR2’) was evaluated as (‘Resx’ == ‘Resx’ and ” != ‘false’ and ‘CLR2’ != ‘CLR2’). 1>Task “GenerateResource” 1> Launching task “GenerateResource” from assembly “Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” in an external […]

Antlr4 C#目标和生成文件的输出路径

我有一个带有Antlr3语法文件的C#解决方案,我正在尝试升级到Anltr4。 事实certificate语法是容易的部分(它变得更好,并且大小的三分之一!)。 生成解析器结果是棘手的部分。 在旧的解决方案中,我只是运行AntlrWorks来更新语法文件更改时的词法分析器和解析器.cs文件。 词法分析器和解析器直接包含在与语法相同的项目中,因此解析器周围的框架可以直接使用它们。 使用C#的Antlr4目标,我注意到(至少默认情况下)生成的Parser C#类的输出路径位于中间目录中,例如obj \ Debug。 这意味着我不能直接在同一个项目中使用解析器。 如果我希望生成的源可以在我的sln中使用,我是否应该更改输出路径? 我不希望它在我的sln? 我尝试为解析器生成创建一个单独的项目,即只包含语法文件的项目。 当使用Antlr4目标构建此项目时,可以从需要解析器类的项目中引用生成的程序集。 但是,如果这个项目包含在解决方案中,我仍然没有在visual studio中获得任何intellisense,因为它将intellisense基于加载项目的源文件,因此它仍然不太可用。 我能使其正常工作的唯一方法是构建然后卸载解析器项目,并让其他项目将其作为程序集文件而不是项目引用。 编辑: 在查看antlr-interest列表后,我发现这个线程表明intellisense的问题可能是Resharpers故障。 如果是这种情况,那么我的问题是如何在我的解决方案中继续使用Antlr4和Resharper? https://groups.google.com/forum/#!topic/antlr-discussion/QSuJXphaBDg

使用Roslyn编译时编译源代码

在CI服务器上的MSBuild任务中使用Roslyn编译之前是否可以修改源代码? 我已经成功地做了我想要的VS但是我想知道它是否可能在VS之外。 目前我正在研究Workspace API和编译器API,它们似乎是实现这一目标的正确工具,但我仍然不确定它是否可行? 特别是我担心返回我对MSBuild所做的更改以允许它继续工作。