C# 如何在没有任何错误或警告的情况下找到生成失败的原因
我有一个WebApplication,其中包含对WCF服务的引用 使用Visual Studio 2010生成时,生成失败,没有任何错误或警告。但是,使用C# 如何在没有任何错误或警告的情况下找到生成失败的原因,c#,asp.net,.net,visual-studio-2010,C#,Asp.net,.net,Visual Studio 2010,我有一个WebApplication,其中包含对WCF服务的引用 使用Visual Studio 2010生成时,生成失败,没有任何错误或警告。但是,使用MsBuild构建.csproj是成功的 无法确定我应该在Visual Studio中尝试什么来解决/诊断问题。你能帮忙吗 编辑: 我发现构建失败了 来自状态栏中显示的文本。 从输出窗口: ========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========
MsBuild
构建.csproj
是成功的
无法确定我应该在Visual Studio中尝试什么来解决/诊断问题。你能帮忙吗
编辑:
我发现构建失败了
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========
- 如果解决方案包含多个项目,请尝试一次构建一个项目
- 尝试重新启动Visual Studio
- 尝试重新启动计算机
- 尝试“全部重建”
- 尝试“清理解决方案”,然后删除“vspscc”文件和“vssscc”文件,然后重新启动Visual Studio,然后“全部重建”
然后我一点一点地取消对代码的注释,然后一切都正常了。VS(2013 Pro,Win 8.1)restart为我做了这件事 我也遇到了类似的情况。在我的例子中,csproj文件的BeforeBuild目标中出现的一个自定义操作(来自Nuget.org上提供的MSBuildVersioning包)失败,在正常位置未触发任何错误消息 我可以通过将“MSBuild项目生成输出详细信息”(在最新的Visual Studio的“工具”选项卡[路径:Tools>Options>build and Run]中)设置为“Diagnostic”来确定这一点,如下所示。这表明定制操作(在我的例子中是HgVersionFile)失败了 首先“清洗溶液”,然后重建溶液 如果无法工作,请关闭解决方案并重新启动解决方案 试试这些东西,希望绝对管用。我想继续 为了解决Visual Studio 2015 Update 2的问题,我必须一次构建一个项目,并在每次构建后查看输出窗口 一个项目给了我 “命名空间'BeforeSomeNamespace'中不存在类型或命名空间名称'SomeNamespace'(是否缺少程序集引用?) “错误列表”窗口中没有错误,但程序集在“引用”下有一个黄色警告标志
然后我看到参考项目的目标是4.5.1和参考项目4.6.1。将4.6.1更改为4.5.1使整个构建成功。在向解决方案中添加新项目(称为“TestCleaner”)后,我遇到了类似的问题:构建失败,没有错误 我增加了输出的详细程度(参见Richard J Foster的说明),并在输出中搜索“失败”。我很快发现了哪个项目失败了,以及失败的原因:项目“TestRunner”失败了,“错误CS0246:找不到类型或命名空间名称“TestCleaner”(即使代码中没有突出显示任何问题) 检查TestRunner的引用,确保TestCleaner的引用被标记为未解析,并且引用属性中缺少路径。删除并重新添加无法修复此问题。同样,没有解释为什么
我最终发现了原因:“TestCleaner”使用了与其他项目不同的目标框架。它是.NET4.5.2;其他版本是4.5。我什么都没用,所以我删除了.suo文件,重新启动了VS,清理了投影,然后构建就可以工作了。这个问题似乎有多个答案,所以我将根据个人经验添加我的,希望它能节省一些时间/压力 确保解决方案中的所有项目都以相同的.NET版本为目标 与OP类似,有0个错误,但生成一直失败。然而,有一个警告条目(隐藏在几百个无用的XML警告中…)指出,一个项目的目标是与引用它的项目不同的.NET版本。整个问题是,我的解决方案中有一个项目的目标是.NET 4.5.2,而其他项目的目标是4.5.1。即使存在这种差异,它也应该可以工作(因此它只是一个警告),但不幸的是,它破坏了构建
奇怪的是,它构建/运行了一段时间,但突然构建开始失败,导致了这个问题。我不确定是什么原因导致它开始抱怨不同的.NET目标版本,但我觉得Visual Studio中存在一些永远无法解决的谜团。另一种可能是Visual Studio需要以管理员身份运行,这可能与部署到本地IIS服务器或其他部署需要有关。当引用的某个项目是比当前项目更高版本的.NET framework时,可能会发生这种情况。删除两个表单后,我遇到了相同的问题。当我进入代码并为我删除的一个控件执行“显示定义”时,错误就出现了
我在我的一个项目中也瞄准了一个更高的框架,因此这可能也是问题所在。为了完成,也许是为了帮助将来再次遇到相同错误的人,我使用了Mahapps metro界面,并更改了一个窗口的XAML,但是忘记了更改代码中的分部类。在这种情况下,构建失败,没有出现错误或警告,我可以通过增加设置输出的详细程度来找到它:
我也有同样的问题。“错误列表”窗口有两个下拉列表“显示包含的项目”和“显示生成的问题”。将鼠标悬停在下拉列表上后,这些名称可见。“显示生成的问题”下拉列表被设置为“Build+IntelliSense”,更改为“Build Only”后,错误将显示为
dotnet build
2>"C:\Company\Project\project.sharded\Project\Project.csproj" (Rebuild;BuiltProjectOutputGroup;BuiltProjectOutputGroupDependencies;DebugSymbolsProjectOutputGroup;DebugSymbolsProjectOutputGroupDependencies;DocumentationProjectOutputGroup;DocumentationProjectOutputGroupDependencies;SatelliteDllsProjectOutputGroup;SatelliteDllsProjectOutputGroupDependencies;SGenFilesOutputGroup;SGenFilesOutputGroupDependencies target) (1) ->
2>(CoreCompile target) ->
2> C:\Company\Project\project.sharded\Project\Services\UserService.cs(387,59,387,62): error CS0136: A local or parameter named 'sut' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter
2>
2> 2147 Warning(s)
2> 1 Error(s)
var sut = _sdb.SysUsableThreads.SingleOrDefault(sut => sut.uid == thread.uid && sut.thread_core == thread.core);