我开始研究PowerShell模型和管理单元开发.我注意到的第一件事是引用System.management.automation.dll.但是在Visual Studio中,.NET选项卡没有该程序集,也无法浏览到
C:\windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll
制作基于文件的参考.
我们接管了一些.NET 1.1 Windows服务代码,它生成线程以从队列中读取消息(SeeBeyond eGate JMS队列,但这并不重要),然后生成线程来处理目标应用程序服务中的消息.我们不断遇到令我们困惑的逻辑和设计决策.这是一个示例,其中已从队列中检索消息(lsMessage)并准备好进行处理
if(lsMessage != null)
{
// Initialize a new thread class instance, pass in message
WorkerThread worker = new WorkerThread(lsMessage);
Process:
// Start a new thread to process the message
Thread targetWorker = new Thread(new ThreadStart(worker.ProcessMessage));
if(targetWorker != null)
{
targetWorker.Priority = ThreadPriority.Highest;
targetWorker.Name = "Worker " + queueKey.ToString();
targetWorker.Start();
// wait for worker thread to join back in specified period
bool isFinished = targetWorker.Join(SYNC_THREAD_TIMEOUT);
string message = worker.replyMsg;
if ( !isFinished ) // BF is …Run Code Online (Sandbox Code Playgroud) 当Joel Spolsky和Jeff Atwood在他们的播客中就程序员是否应该学习C而开始存在分歧时,无论他们的行业和交付平台如何,它在开发者社区中引发了一场爆炸性的辩论,这可能仍然在今天的某些群体中肆虐.我一直在阅读一些程序员博主的一些段落,他们对此事采取了行动.来自双方的争论当然具有重要性,我所没有发现的是一个与开发人员专注于.NET Framework的观点截然不同的视角.几乎所有人都在评论一般的程序员观点.
我想要的是什么?回想一下杰夫阿特伍德的观点,即大多数时候开发者处于如此高水平的花费将是学习业务/领域,除了学习技术以实现这些领域要求所需的一切.在我的工作经历中,这是对许多人工作生活的非常准确的描述.现在假设.NET开发人员可以派生的"课外"学习的时候,应该是为C?
为了记录,我自己在学校里学习过C,我完全理解和欣赏支持者的推理.但是,在考虑事情时,我个人认为.NET开发人员不应该直接进入C.因为,我希望更多的开发人员需要花些时间学习的东西是 - MSIL和CLR.
也许我被一群不同寻常的同事困住了,我不知道,但在我看来很多人并没有意识到他们的C#或VB代码在JIT进入之前首先在IL编译并使其成为原始机器码.大多数人不知道的IL,并且在如何不感兴趣准确的CLR处理他们编写的代码.通过C#阅读Jeffrey Richter的CLR对我来说在很多方面都让我感到震惊; 很高兴我读到它,尽管同事们认为它"太低了".我不是IL的专家,但是在基础知识方面,我发现自己更容易跟随他的文本,因为我已经熟悉了IL的堆栈行为.我发现自己拆解程序集以查看在编写某些代码时IL的结果.
我学习了CLR和MSIL,因为我知道这是我下面的直接层.允许我执行自己的工作层的图层.C,实际上是进一步下降.更接近我们的"现实"的是CLR和MSIL.这就是为什么我会建议其他人去那些,因为我没有看到足够的人在钻研那层.或者,您的团队是否已全部熟悉MSIL?
我目前正在研究通过WSE 3.0或WCF加密和签名SOAP消息的主题.由于我没有参与涉及公共Internet的分布式应用程序开发,因此我发现我对X.509证书缺乏知识以及它在Windows证书存储机制中的工作原理.它不是关于非对称密码学; 它是关于PKI生态系统的.
因此,我想收集一些文章或书籍,这些文章或书籍对Windows的安全机制,如何正确使用和管理证书存储,CA信任链以及WSE或WCF等API如何交互并使用证书进行全面解释.建议?
如何让Visual Studio 2005/2008引用64位GAC而不是32位GAC中的程序集?我们将目标平台设置为x64,编译器抛出错误
错误2警告错误:程序集生成 - 引用程序集"System.Data.dll"针对不同的处理器Common
错误3警告错误:程序集生成 - 引用程序集'mscorlib.dll'针对不同的处理器Common
错误4程序集签名失败; 输出可能未签名 - 系统找不到指定的文件.共同
2008年12月29日更新
一直在试用Aaron Stebner的建议,将64位程序集放在一个隔离的位置(例如C:\ Windows\Microsoft.NET\Framework64\v2.0.50727\GAC_64),并在注册表中创建其他条目,如HKLM\SOFTWARE\Microsoft.NETFramework\AssemblyFolders\GAC_64或HKLM\SOFTWARE\Microsoft.NETFramework\v2.0.50727\AssemblyFoldersEx\GAC_64但Visual Studio 2005仍然没有提起它....
我的服务器上安装了给定的证书.该证书具有有效日期,并且在Windows证书MMC管理单元中似乎完全有效.
但是,当我尝试读取证书时,为了在HttpRequest中使用它,我找不到它.这是使用的代码:
X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly); X509Certificate2Collection col =
store.Certificates.Find(X509FindType.FindBySerialNumber, "xxx", true);
Run Code Online (Sandbox Code Playgroud)
xxx是序列号; 该参数true意味着"只有效证书".返回的集合为空.
奇怪的是,如果我通过false,表示可以接受无效证书,则该集合包含一个元素 - 具有指定序列号的证书.
总之:证书似乎有效,但该Find方法将其视为无效!为什么?
我们有一个ASP.NET文件传递应用程序(内部用户上传,外部用户下载),我想知道分发文件的最佳方法是什么,所以我们只有将应用程序的文件存储在一个文件上才会出现单点故障服务器.我们将应用程序的负载分布在多个前端Web服务器上,这意味着对于文件存储,我们不能简单地在Web服务器上本地存储文件.
我们当前的设置让我们指向主数据库/文件服务器上的共享.在一天中,我们将主服务器上共享的内容复制到故障转移.这个scneario确保我们有一台辅助计算机上有相当新的数据但我们希望能够从主服务器故障转移到故障转移,然后再返回,而不会丢失前端应用程序中的数据或错误.现在,这是一个相当手动的过程.
可能的方案包括:
那么你通常如何解决这个问题,什么是最好的解决方案?
由于这个社区中有大量热情的开发人员,我想收集你对此事的看法 - 你认为在家购买和操作实际的服务器硬件以增加自己的开发和学习是否过分或有利努力?
回到2003/4,当我跳进开发线时,我觉得服务器只属于数据中心,并且不相信家用服务器的价格; 消费者的计算能力已经相当稳固(当时),同样功能的PC可能只需要很少的成本.自从我还是个小学生以来,我已经组装了自己的个人电脑,我认为获得二手组件以构建新PC的活动是一件容易的事.准备一台PC作为我的开发测试的专用Windows 2003服务器是很简单的.但是三年多来,我一直在使用真正的服务器,尽管是低端型号.由于许多因素,我最终处于这种状态.
总而言之,通过胡思乱想的DIY,我花费了更多的时间来解决硬件问题,而不是处理实际的开发问题.当我投入资金购买真正的服务器时,我的生活中的硬件问题立即出现了下降.如果我能找到适合我的开发需求的配置,我可能也会购买供应商制造的工作站.
现在,我的一些对工作充满热情的技术朋友也在家里经营自己的服务器.问题是,大多数其他人/同事都对我实际花钱购买此类机器感到相当惊讶.有些人会把我归类为疯子.我真的离开了吗?
更新 - 澄清服务器使用情况
基本服务器(Windows Server 2008)提供基本的IIS 7/ASP.NET,SQL Server 2008和Subversion服务.但它扮演的最大角色是在Hyper-V中托管各种虚拟机.我不是一个开发人员,只是被告知要针对单个数据库敲出应用程序代码并将其检入某个版本控制存储库然后回家而不必担心应用程序和实现如何在生产环境中运行.作为解决方案集成商,我必须了解客户/客户环境,并考虑包含基础架构和部署问题的全局解决方案.软件应用程序开发虽然是我的主要角色,但却只是解决方案的一部分.
我经常发现自己必须尝试并发现某些建议或方法是否适用于给定环境,并且必须准备虚拟服务器,如域(控制器),Web服务器,数据库服务器,BizTalk服务器组,Team Foundation服务器等进行我的分析并巩固我的建议.这些虚拟机可以作为我的个人POC使用.我面临的情景继续变大,我绝对不知道如何在没有允许我虚拟化和模拟它们的基础平台的情况下学习如何处理这些情况.
我正在学习WPF中的控件模板,并了解如何使用自定义模板样式替换按钮外观.我看到要制作一个圆形按钮,必须使用相同的高度和宽度定义椭圆.
<Style x:Key="Button2" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<Ellipse Fill="LightGreen" Width="80" Height="80"/>
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Control.Margin" Value="10"/>
</Style>
Run Code Online (Sandbox Code Playgroud)
当然,这只会强制使用该样式的所有按钮都有一个直径为80像素的圆,无论按钮的大小如何.我希望圆圈采用较短的高度/宽度值,以便它可以根据按钮大小调整动态缩放.
但是,我还没有阅读任何教导如何在纯XAML模板中完成此操作的材料?似乎需要一些代码隐藏来实现这种效果?
我们有一个解决方案,其中包含一个Web应用程序项目,该项目旨在作为Windows Azure云服务中的Web角色.它还有一个仅针对云服务的云服务项目(生产槽)
SlnRoot\WebApp1\WebApp1.csproj SlnRoot\CloudDeployment\CloudServiceName\CloudServiceName.ccproj
从Visual Studio发布(部署)非常容易; 只需从云项目的上下文菜单中选择"发布..."选项,然后点击"发布",其中包含所有预配置的云服务设置.
现在我们正在进一步尝试自动化这个过程,所以我在没有Visual Studio的帮助下从命令行和原始MSBuild尝试它.
.nuget\nuget.exe restore
msbuild .\CloudDeployment\CloudServiceName\CloudServiceName.ccproj /t:Publish /p:PublishDir=..\..\pubout\ /fl1 /v:d
Run Code Online (Sandbox Code Playgroud)
但看来,Publish目标实际上是Visual Studio中的Package选项,只生成必须手动上传到Windows Azure门户的cspkg文件.当然,这不行.是否有一个单独的目标来指定执行Visual Studio如此轻松执行的附加步骤(部署不是它;没有这样的目标)?