visual studio 2015 MVC项目区域问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了visual studio 2015 MVC项目区域问题相关的知识,希望对你有一定的参考价值。
之前在visual studio 2012 MVC项目添加区域(Ares)直接右键就可以找到,新装了一个 visual studio 2015 MVC项目 怎么添加区域呢?
你好 我们一般采用如下做法:1.如果是某个按钮 我们可以 <input type="img">
2.如果是一些文本框内的图片 那么没办法 要么你用div替代
要么 你就让他看起来像是 在文本框上 其实他根本 不在 利用 相对定位和绝对定位 将图片 悬浮遮挡 文本区域的某一块 参考技术A 这个或许能帮到你https://msdn.microsoft.com/zh-SG/library/ee671793(v=vs.100)?cs-save-lang=1&cs-lang=vb
SpecsFor MVC / MSBuild.exe 无法在 Visual Studio 2012 中正确构建/发布项目
【中文标题】SpecsFor MVC / MSBuild.exe 无法在 Visual Studio 2012 中正确构建/发布项目【英文标题】:SpecsFor MVC / MSBuild.exe not building / publishing project correctly in Visual Studio 2012 【发布时间】:2014-07-18 11:42:40 【问题描述】:我正在尝试使用 SpecsFor MVC 进行自动化验收测试,我注意到它没有在 Visual Studio 2012 上正确构建/发布项目,因此 IIS Express 没有运行,以“无法显示页面”消息结尾在整个自动化验收测试中。
为了让您完成我的所有测试以使其正常工作,最初,在尝试运行自动化测试时,我在运行时收到“构建失败”消息
_host = new SpecsForIntegrationHost(config);
_host.Start();
。加载 SpecsFor MVC 源代码后,我注意到错误是因为 MSBuild.exe
进程失败并且输出消息正在写入 Console.Output
。检查输出后,我注意到错误是找不到Microsoft.WebApplication.targets
。经过一番研究,我发现了以下内容:
.csproj
中删除<PropertyGroup>
节点,删除它后,MSBuild.exe
没有以错误代码退出,因为它只有警告,这仍然导致项目不正确构建和发布。在这种情况下,SpecsFor MVC 将此方案视为成功并继续启动 IIS Express,但由于项目未成功构建,验收测试导致另一个 Page Cannot Be Displayed
消息,因为 IIS Express 未正确运行。
经过进一步研究,我发现v11.0\WebApplications\Microsoft.WebApplication.targets was not found when file actually references v10 概述了VS 2012 在C:\Program Files (x86)\MSBuild\12.0\Bin
中有一个新的不同的MSBuild.exe 文件。
现在的问题是在 SpecsFor MVC IISTestRunnerAction.PublishSite()
方法中,MSBuild.exe
的路径正在通过
System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()
在我的情况下输出 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
。手动将其更改为 C:\Program Files (x86)\MSBuild\12.0\Bin
解决了问题,项目已成功构建和发布。
我的最后一个问题是:有没有一种方法可以更改 System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()
的值,这样我就不需要更新 SpecsFor MVC 项目的源代码了?
提前感谢您的帮助!
【问题讨论】:
我认为覆盖 SpecsFor MVC 如何找到 MSBuild 是最好的解决方案。我可以公开一种明确设置路径的方法。你能在 Github 上打开一个错误报告或功能请求,以便我记得查看这个吗? @MattHoneycutt - 在github.com/MattHoneycutt/SpecsFor/issues/41 上报告的问题 - 非常感谢您的帮助! :) 【参考方案1】:从 SpecsFor.Mvc 3.2.0-rc01(目前仍是预览版)开始,您可以像这样配置 MSBuild 的路径:
var config = new SpecsForMvcConfig();
config.UseIISExpress()
.With(Project.Named("SpecsFor.Mvc.Demo"))
.CleanupPublishedFiles()
//Set the full path to MSBuild.exe here!
.UseMSBuildExecutableAt(@"C:\Program Files (x86)\MSBuild\12.0\Bin\msbuild.exe")
.ApplyWebConfigTransformForConfig("Test");
【讨论】:
感谢您的及时帮助@Matt Honeycutt! :)【参考方案2】:要了解这些“.targets”文件在 Visual Studio 中的组织方式是一项挑战。我对这个 SpecsFor MVC 的工作一无所知,但如果你把正确的“.targets”文件放在它的路径中,它应该可以工作。根据您的问题,我了解 SpecsFor 在内部调用 MSBuild。
安装新的构建机器时也会出现类似的问题,并且缺少很多 Visual Studio 组件。并非所有这些都与框架一起部署。有些带有 Visual Studio 分离的安装程序,有些带有特定的组件。
我没有找到部署此所需文件的特定安装程序。刚刚找到了MSBuild 2012安装程序(http://www.microsoft.com/en-us/download/details.aspx?id=40760),不知道是不是部署了之前的版本.targets。
您也可以尝试针对您的特定版本的 ASP.NET MVC 安装程序。
另一种方法是尝试在 SpecsFor 中查找参数以查看它正在调用的 MSBuild 版本。可能如果它使用 Program Files\v12 中的版本,它应该可以工作。
【讨论】:
是的,如果它使用C:\Program Files (x86)\MSBuild\12.0\Bin
中的新 VS 2012 MSBuild,它可以正常工作。但它正在通过System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()
读取MSBuild 的路径,在我的情况下返回C:\Windows\Microsoft.NET\Framework64\v4.0.30319` which when executed outputs the
.targets` 错误
对不起,我没有回答你的问题。我认为有两种方法:1)查找并安装部署所需 .targets 文件的正确包(我打赌在某些 ASP.NET MVC 包中)或 2)更改 SpecFlow 以接受不同的 MSBuild 路径。既然是开源项目,那么 Pull Request 呢?
我会说 2. 如果没有替代方法来更改 System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()
的结果输出,那将更有意义。我已经联系了项目的创建者以获取反馈,然后将查看 Pull Request
是的。这是一个很好的选择。这种合作总是很有趣。我认为你的问题没有免费的午餐。我看不出有什么不同的方法。以上是关于visual studio 2015 MVC项目区域问题的主要内容,如果未能解决你的问题,请参考以下文章
将引导主题超级英雄添加到 Visual Studio 2017 C# mvc 项目中
Visual Studio 2012/13 在导出的模板中缺少 MVC NuGet
构建:找不到名称 Promise - 带有 MVC6 和 Angular 2 的 Visual Studio 2015