根据手头的项目意识到这可能是主观的,我正在寻找构建VS(Visual Studio)解决方案的"最佳实践"方法.
请随意编辑此内容,评论您认为可能不正确的内容,建议替代方案等.我很高兴看到这个社区Wiki成为刚开始使用VS Solutions的人们的一个很好的资源.
以下是我现在为我工作的(在我目前的项目中),但是我知道有一些事情在错误的地方. 在我的场景中,我正在使用MVC 2构建Web应用程序
请发布您对终极解决方案结构的想法,以便我们了解"最佳方式"/"最佳实践"(无论这意味着什么)
IE:
你如何打破你的DAL(数据访问层)/ BLL(业务逻辑层)?
您是否将存储库层和服务层放在BLL中?如果您正在使用MVC(模型 - 视图 - 控制器),您是否将控制器保留在UI而不是Core中?
你在Utility/Miscellaneous文件夹中扔了很多东西,还是将它分开?
等等...
- MySolution
- MySolution.Core
- 认证
- 这是我有一个POCO和一个方法将poco searial到auth cookie的userData secion的地方
- 基础
- 这是我保留BaseController和BaseGlobal的地方
- 控制器
- 我的所有控制器(显然)
- 域
- DatabaseModels
- 包含我的L2S .dbml文件
- JsonModels
- 用于将JSON对象传递给视图的模型
- 库
- 服务
- 的ViewModels
- 扩展
- 所有扩展方法
- 过滤器
- 动作过滤器
- 公用事业
- 蜜蜂
- 所有第三方API代码都在这里
- 徽章
- 徽章计算在这里
- 的MailClient
- 使用此处的课程发送纯文本或HTML电子邮件
- RoutingHelpers
- 包含一个用于启用小写路由的类
- 还包含我不知道还放在哪里的东西... IE:HTMLSanitizer,自定义HtmlHelpers,UserInfo助手(IP地址,浏览器等),DataConverter等
- MySolution.UI
- App_Browsers文件
- 资产
- CSS
- 图片
- 脚本
- 查看
- Global.asax - 继承自BaseGlobal
- Web.config文件
屏幕截图


请随时发表评论,或者更好的是,在下面发布您自己的版本(答案).我知道我所得到的并不是最好的方式.
在我的解决方案中,我有很多项目使用项目引用解决方案中的其他项目.如何确定哪些项目引用了特定项目?
我正在尝试更新表格中的列以使用值1到(由记录数决定的最大数量).
我不知道我是否正确解释这一点,所以我设置了一个SQLFiddle,其中包含我正在尝试更新的数据.
我想将Version列设置为1到(最大数量).有没有办法将此查询重写为版本号的缩放?在,我想要第一个记录使用1,第二个记录使用2,依此类推......
UPDATE Documents
SET Version = 1
Run Code Online (Sandbox Code Playgroud) 我们有一个DotNetNuke模块在DotNetNuke 5.4.4的实例中运行,安装在"Server A"上,这是一台带有IIS 6.1和Internet Explorer 11的Windows Server 2008 R2 Standard机器.
我们使用Internet Explorer 9从运行Windows Server 2008 Standard的"Server B"访问我们的DotNetNuke模块.
当我们onclick在服务器B上访问我们的模块时,单击具有属性的锚点html元素时会发生此问题.
onclick的锚点如下:
<a onclick='OpenWindow("/DotNetNuke/DesktopModules/Module/View.aspx?dt=%c2%b2%c2");return false;'
href="http://000.00.0.0/DotNetNuke/DesktopModules/Module/View.aspx?dt=%c2%b2%c2"
target='_blank'
jQuery1431968126278="42">Doc name (SSN-SS-SSNN)</a>
Run Code Online (Sandbox Code Playgroud)
而OpenWindow函数就是这样的
function OpenWindow(url) {
window.open(url, '', 'top=15,scrollbars=yes,menubar=no,height=800,width=800,resizable=yes,toolbar=no,location=no,status=no');
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我们有一个带有onclick属性的anchor元素,它应该调用OpenWindow javascript函数,然后返回false,因此单击一个锚点(浏览到href)的默认操作不会发生.
当我们单击此链接时(仅在服务器B上),我们没有弹出窗口,OpenWindow函数中没有断点,浏览器通过打开一个新选项卡(View.aspx)导航到href.这告诉我,onclick属性引用的OpenWindow函数由于某种原因甚至不运行,即使它在anchor元素上,并且可以在任何其他服务器上运行.
我比较了服务器A DotNetNuke和我的本地开发人员DotNetNuke实例之间的安全设置,web.config文件和DotNetNuke设置,发现设置没有差异.
我将Server B Internet Explorer安全设置与我的安全设置进行了比较,发现设置没有差异.
根据对此问题的评论建议,我尝试将锚标记更改为span标记(删除了href和目标属性),我看到了相同的行为.它适用于服务器A和开发人员,但现在不在服务器B上执行任何操作.我认为核心问题是onclick属性未被识别,或者被某种方式阻止.
我现在更进一步,将大多数<a>...</a>标签更改为<span>...</span>标签,使用特定的类,然后我将jQuery(...).live('click', ...)处理程序附加到(使用jQuery 1.4.2).这是允许点击工作,但我仍然没有解决为什么忽略onclick属性.
如果我打开开发人员工具(IE9),然后单击"编辑"按钮再次打开和关闭编辑模式,锚标签和img标签上的所有onclick属性开始正常工作,直到我重新加载页面.
如果我通过开发人员工具以任何方式手动编辑onclick处理程序,比如说return false;从onclick处理程序中删除它,它会工作,但是如果我把return false;它放回去使它像我从未改变任何东西那样,它会再次停止工作.
我正在找一块墙来检查这个问题.我无法在我的开发人员计算机上重现它,它也适用于服务器A,所以代码工作得非常好.我想我必须有一个设置,我忽略了某个地方,但在哪里?我不知道此时还有什么要检查,我正在寻找想法.
我正在尝试使用WCF测试客户端来调试Web方法,并且该方法需要2字节数组作为其输入的一部分.
现在,我刚刚使用调试器并在传递的值被使用之前放置断点,并使用visual studio观察窗口设置它们.
有没有一种简单的方法可以使用WCF测试客户端为字节数组的每个字节设置值?
我知道您可以通过键入"length = 100"或类似内容来指定数组的长度,但这只能设置数组的大小.然后,您必须单击下拉列表并逐个输入每个字节的值.
有没有人在使用WCF测试客户端时有输入数组值的经验?
我正在构建RESTful API,我想控制所有可能的输出给我的消费者.我正在实现一个ExceptionFilterAttribute过滤我控制器中引发的所有异常.但是,这并不能让我控制在到达控制器代码之前我的应用程序中可能发生的错误 - 例如路由错误.默认行为发回标准的序列化HttpError,给出了太多内部信息,比如控制器类名等.我想避免这种情况.改变这种行为的最佳方法是什么?
asp.net-mvc asp.net-mvc-4 asp.net-web-api asp.net-web-api-routing
我试图让我的应用程序自动启动并在Windows启动时运行登录逻辑.
我已经使用参数启动文件夹中的快捷方式,但我想知道是否有一些方法来设置一个可以启动我的程序的注册表项,并像快捷方式一样传递参数?
我正在使用Inno Setup安装程序,我正在使用这一行:
Name: "{commonstartup}\AppNameHere"; Filename: "{app}\AppNameHere.exe"; \
Parameters: "/login"`
Run Code Online (Sandbox Code Playgroud)
但我希望能够改为使用这样的注册表项:
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; \
ValueType: string; ValueName: "AppNameHere"; ValueData: """{app}\AppNameHere.exe"""; \
Flags: uninsdeletevalue`
Run Code Online (Sandbox Code Playgroud)
我认为有一些方法可以为启动指定参数但我在Inno Setup网站上找不到任何内容,除了我已经发现的关于从http://www.jrsoftware.org/iskb.php添加注册表项本身的内容. ?startwithwindows
有没有人有在Windows启动时添加注册表项和使用参数启动应用程序的经验?
我正在努力提高我能够将多页TIFF文件拆分为单个页面的速度,这些页面存储为字节数组列表.我正在研究这个TiffSplitter类,试图提高Paginate方法的速度.
我听说过LibTiff.net,并想知道它是否比这个过程更快?目前,在7页多页TIFF文件上调用Paginate方法大约需要1333 ms.
有谁知道将多页TIFF的各个页面作为字节数组检索的最有效方法是什么?或者可能对如何提高我目前正在使用的流程的速度有任何建议?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
namespace TiffSplitter
{
public class TiffPaginator
{
private List<byte[]> paginatedData;
public List<byte[]> Pages
{
get
{
return paginatedData;
}
}
public TiffPaginator()
{
paginatedData = new List<byte[]>();
}
public void Paginate(string Filename)
{
using (Image img = Image.FromFile(Filename))
{
paginatedData.Clear();
int frameCount = img.GetFrameCount(FrameDimension.Page);
for (int i = 0; i < frameCount; i++)
{
img.SelectActiveFrame(new FrameDimension(img.FrameDimensionsList[0]), i);
using (MemoryStream memstr = new MemoryStream())
{ …Run Code Online (Sandbox Code Playgroud) 在家里,我正在使用ColdFusion Builder 1.0
当我打开文件并按ctl+ shift+时O,它会输出此信息
<cfoutput></cfoutput> or writeOutput();
Run Code Online (Sandbox Code Playgroud)
当我打开文件并按ctl+ shift+时a,它会输出:
<cfabort> or abort:
Run Code Online (Sandbox Code Playgroud)
当我打开文件并按ctl+ shift+时d,它会输出:
<cfdump var=""> or writeDump():
Run Code Online (Sandbox Code Playgroud)
在工作中,我使用的是ColdFusion Builder 2.0.1.上述"特征"都不起作用.我想让他们上班.有哪些功能?快捷方式?我是否需要单独下载和安装它们?我到处搜索,找出如何实现这一点并且没有运气.请指教.
.net ×2
c# ×2
asp.net ×1
asp.net-mvc ×1
coldfusion ×1
dotnetnuke ×1
html ×1
inno-setup ×1
javascript ×1
onclick ×1
project ×1
registry ×1
solution ×1
sql ×1
sql-server ×1
startup ×1
tiff ×1
wcf ×1
windows ×1