标签: msbuild

VS2015:警告MSB3884:找不到规则集文件

将我的WinForms VS2013项目升级到VS2015后,我开始看到MSB3884"无法找到规则集文件"警告.

谷歌搜索出现了一篇MSDN文章,Stack Overflow文章指出了这篇文章以及许多其他网站.

类似的问题:33020507 MSDN:VS2015 MSB3884警告

我安装了VS2013和VS2015.

提供警告的项目文件(以及不提供警告的项目文件)没有这些条目.

<CodeAnalysisRuleSetDirectories>
<CodeAnalysisRuleDirectories> 
Run Code Online (Sandbox Code Playgroud)

如果我从项目文件中删除其他两个条目,那么问题就会消失,这很明显,因为没有规则文件集.

<CodeAnalysisIgnoreBuiltInRuleSets> 
<CodeAnalysisIgnoreBuiltInRules>
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用msbuild在外部构建,但VS2015也倾向于显示问题.

有趣的是,如果我点击项目属性代码分析器区域中的打开按钮,我确实得到了该文件.

指定不同的规则集没有区别.这让我觉得可能有一个环境变量设置,而不是任何想到的.代码分析器是项目文件的一个功能.我可以添加一个目录属性,但共识是取出路径,<CodeAnalysisRule*Directories>.

GUI使用默认值:

VS2015项目属性代码分析选项卡"

这是一个典型的项目文件片段.

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\x86\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG</DefineConstants>
    <DebugType>full</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
    <Prefer32Bit>false</Prefer32Bit>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
    <CodeAnalysisRuleSet>BasicCorrectnessRules.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\x64\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG</DefineConstants>
    <DebugType>full</DebugType>
    <PlatformTarget>x64</PlatformTarget>
    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

如果不从项目文件中删除代码分析行,虽然再次保存项目文件只会将其添加回来,如何消除/修复警告?

c# msbuild code-analysis visual-studio-2015

64
推荐指数
8
解决办法
4万
查看次数

MSBuild将参数传递给CallTarget

我正在尝试在我的MSBuild文件中创建一个可重用的目标,所以我可以使用不同的参数多次调用它.

我有这样的骨架:

<Target Name="Deploy">
    <!-- Deploy to a different location depending on parameters -->
</Target>

<Target Name="DoDeployments">
    <CallTarget Targets="Deploy">
        <!-- Somehow indicate I want to deploy to dev -->
    </CallTarget>

    <CallTarget Targets="Deploy">
        <!-- Somehow indicate I want to deploy to testing -->
    </CallTarget>
</Target>
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何允许参数传递到CallTarget,然后依次传递给Target自己.

msbuild parameter-passing msbuild-target

63
推荐指数
2
解决办法
4万
查看次数

我可以在Visual Studio中设置LARGEADDRESSAWARE吗?

我有一个.net程序集需要32位,需要/ LARGEADDRESSAWARE.

我知道如何使用EditBin执行此操作,但我想知道Visual Studio 2010中是否存在内置方式?或者,有人为此编写了MSBuild任务吗?

编辑:这是一个C#应用程序,所以没有链接器选项可悲:(

.net c# msbuild visual-studio

63
推荐指数
4
解决办法
3万
查看次数

自动创建NuGet包作为构建过程的一部分

我有一个自动构建过程,我想扩展,所以我可以构建我通过NuGet分发的库.目前,运行nuget.exe来创建包是一个手动操作.

设置VS 2010的最佳方法是什么,以便我的NuGet包(*.nupkg)文件是"Release"构建的最终结果?

请记住,我有一些包的其他文件(内容和工具).而且,在大多数情况下,我将多个项目合并到一个NuGet包中,以支持.NET 4,Silveright和Phone 7.

(我应该澄清一下,现有的"自动化"流程是一个简单的批处理文件运行器,可以使用命令行构建解决方案.)

UPDATE

我想更新此讨论,因为问题尚未解决.虽然提供的@pravin链接很有帮助,但它并没有解决我在单个包中有多个项目以及PowerShell脚本,配置和源代码转换等其他内容的事实.

我可以使用的最好的例子是具有.NET 4和Silverlight 5版本的程序集.它们分布在同一个包中.我不能使用post-build事件来创建包,因为包依赖于两个项目.

msbuild visual-studio-2010 nuget nuget-package

63
推荐指数
4
解决办法
3万
查看次数

文件路径中的两个星号

以下文件路径是什么意思?

$(Services_Jobs_Drop_Path)\**\*.config
Run Code Online (Sandbox Code Playgroud)

变量只保留一些路径,没有什么有趣的.我更关心的是,这究竟是什么**意思.有任何想法吗?

PS如果有帮助,则在msbuild脚本中使用以下路径.

windows msbuild filepath

61
推荐指数
1
解决办法
3万
查看次数

.csproj程序集的多个提示路径

我正在打包SDK发行版的示例代码.在分发中,从代码到SDK程序集的相对路径与构建机器不同.例如:

分配

csharp/bin/assembly.dll
example/ex1/ex1.csproj
Run Code Online (Sandbox Code Playgroud)

构建机器

foo/sdk/csharp/bin/assembly.dll
bar/baz/quux/ex1/ex1.csproj
Run Code Online (Sandbox Code Playgroud)

假设我无法移动任何东西.有没有办法可以指导ex1.csproj两者兼顾

../../csharp/bin/ ../../../../foo/sdk/csharp/bin/assembly.dll

在C++中,我将依赖路径放在一个独立的属性表中,并使用SDK分发不同的版本.但是C#没有属性表,我不想维护整个项目的两个版本.

我已经看到这个问题表明我不能使用多个<HintPath>标签,所以我正在寻找另一种方法来近似相同的行为.

c# msbuild csproj visual-studio-2010

61
推荐指数
4
解决办法
2万
查看次数

找不到"C:\ Microsoft.Cpp.Default.props"

我有一个在Visual Studio,2013中创建的项目.

项目文件具有以下属性:

ToolsVersion ="12.0",PlatformToolset = v120.

我安装了Visual Studio 2013和Microsoft Build Tools 2015.使用MSBuild 12.0成功构建此项目.在尝试使用MSBuild 14.0构建它时,我收到错误

MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. 
Run Code Online (Sandbox Code Playgroud)

据我了解,问题是变量VCTargetsPath没有得到评估.如果我在构建之前指定变量VCTargetsPath(值为C:\ Program Files(x86)\ MSBuild\Microsoft.Cpp\v4.0\V120),问题就解决了.

但是,如果路径不同,这种方法不是很方便.是否有可能以更优化的方式以某种方式解决问题?

注册表项及其值:

HKLM\Software\WOW6432Node\Microsoft\MSBuild\ToolsVersions\12.0\VCTargetsPath $([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V120\'))
Run Code Online (Sandbox Code Playgroud)

msbuild visual-studio visual-studio-2012

61
推荐指数
6
解决办法
4万
查看次数

卡住非活动msbuild.exe进程,锁定Stylecop.dll,Nuget AccessViolationException和CI构建相互冲突的谜团

观察:

  • 在我们的Jenkins构建服务器上,我们看到很多msbuild.exe进程(~100)在作业完成后闲置,大约20mb内存使用率和0%CPU活动.

  • 使用不同版本的stylecop的构建间歇性地失败:

    workspace\packages\StyleCop.MSBuild.4.7.41.0\tools\StyleCop.targets(109,7): error MSB4131: The "ViolationCount" parameter is not supported by the "StyleCopTask" task. Verify the parameter exists on the task, and it is a gettable public instance property.

  • Nuget.exe 间歇性地退出,出现以下访问冲突错误(0x0000005):

    .\workspace\.nuget\nuget install .\workspace\packages.config -o .\workspace\packages" exited with code -1073741819.

MsBuild通过Jenkins Matrix作业以下列方式启动,启用了"BuildInParallel":

    `msbuild /t:%Targets% /m
    /p:Client=%Client%;LOCAL_BUILD=%LOCAL_BUILD%;BUILD_NUMBER=%BUILD_NUMBER%;
    JOB_NAME=%JOB_NAME%;Env=%Env%;Configuration=%Configuration%;Platform=%Platform%;
    Clean=%Clean%; %~dp0\_Jenkins\Build.proj`
Run Code Online (Sandbox Code Playgroud)

msbuild stylecop nuget

60
推荐指数
1
解决办法
2万
查看次数

未为项目设置OutputPath属性

构建我的Jenkins/MSBuild解决方案给了我这个错误

c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(483,9): error : 
The OutputPath property is not set for project '<projectname>.csproj'.  Please check to
make sure that you have specified a valid combination of Configuration and Platform 
for this project.  Configuration='Latest'  Platform='AnyCPU'.  You may be seeing this 
message because you are trying to build a project without a solution file, and have
specified a non-default Configuration or Platform that doesn't exist for this project. 
[C:\<path>\<projectname>.csproj]
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑

我在.csproj文件中有这个

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Latest|AnyCPU'">
    <OutputPath>bin\Latest\</OutputPath>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

msbuild jenkins

60
推荐指数
4
解决办法
7万
查看次数

MSDeploy通过MSBuild的有效参数

我正在尝试使用MSDeploy在TFS中的Team Build上部署Web应用程序.有几个问题解决了为了调用MSDeploy而必须在MSBuild中传递的属性,但是我没有找到足够的文档来说明可用的属性.有人有可用属性列表吗?

以下是我发现的一些问题,但我无法找到属性的确切列表:

msbuild tfs msdeploy

59
推荐指数
2
解决办法
2万
查看次数