将我的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使用默认值:
这是一个典型的项目文件片段.
<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)
如果不从项目文件中删除代码分析行,虽然再次保存项目文件只会将其添加回来,如何消除/修复警告?
我正在尝试在我的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自己.
我有一个.net程序集需要32位,需要/ LARGEADDRESSAWARE.
我知道如何使用EditBin执行此操作,但我想知道Visual Studio 2010中是否存在内置方式?或者,有人为此编写了MSBuild任务吗?
编辑:这是一个C#应用程序,所以没有链接器选项可悲:(
我有一个自动构建过程,我想扩展,所以我可以构建我通过NuGet分发的库.目前,运行nuget.exe来创建包是一个手动操作.
设置VS 2010的最佳方法是什么,以便我的NuGet包(*.nupkg)文件是"Release"构建的最终结果?
请记住,我有一些包的其他文件(内容和工具).而且,在大多数情况下,我将多个项目合并到一个NuGet包中,以支持.NET 4,Silveright和Phone 7.
(我应该澄清一下,现有的"自动化"流程是一个简单的批处理文件运行器,可以使用命令行构建解决方案.)
UPDATE
我想更新此讨论,因为问题尚未解决.虽然提供的@pravin链接很有帮助,但它并没有解决我在单个包中有多个项目以及PowerShell脚本,配置和源代码转换等其他内容的事实.
我可以使用的最好的例子是具有.NET 4和Silverlight 5版本的程序集.它们分布在同一个包中.我不能使用post-build事件来创建包,因为包依赖于两个项目.
以下文件路径是什么意思?
$(Services_Jobs_Drop_Path)\**\*.config
Run Code Online (Sandbox Code Playgroud)
变量只保留一些路径,没有什么有趣的.我更关心的是,这究竟是什么**意思.有任何想法吗?
PS如果有帮助,则在msbuild脚本中使用以下路径.
我正在打包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>标签,所以我正在寻找另一种方法来近似相同的行为.
我有一个在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) 观察:
在我们的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) 构建我的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) 我正在尝试使用MSDeploy在TFS中的Team Build上部署Web应用程序.有几个问题解决了为了调用MSDeploy而必须在MSBuild中传递的属性,但是我没有找到足够的文档来说明可用的属性.有人有可用属性列表吗?
以下是我发现的一些问题,但我无法找到属性的确切列表: