如何使用VSTO加载项项目轻松创建Excel UDF

我想要做的是使用VSTO的C#“Excel 2007加载项” – 项目类型为Excel创建用户定义函数(UDF)(因为我只想生成一些通用UDF)。 因为我只是想学习基础知识(无论如何在这个阶段),这就是我的代码: using System; using System.Collections.Generic; using System.Text; using System.Xml.Linq; using Excel = Microsoft.Office.Interop.Excel; using Office = Microsoft.Office.Core; using Microsoft.Office.Tools.Excel; using Microsoft.Office.Tools.Excel.Extensions; using System.Runtime.InteropServices; namespace ExcelAddIn1 { public partial class ThisAddIn { private void ThisAddIn_Startup(object sender, System.EventArgs e) {} private void ThisAddIn_Shutdown(object sender, System.EventArgs e) {} //My UDF public static double HeronicCal(int […]

使用System.Data.SQLite和Entity Framework 6的简单示例

我正在尝试使用SQLite和EF6在控制台应用程序中使用简单的代码第一个示例,但是我遇到了多个错误:我在VS 2015中创建了一个新的控制台项目。然后安装EF(6.1.3)和System。 Data.SQLite(1.0.102)通过NuGet。 尝试运行一个简单的程序: namespace SQLiteConsole1 { class Person { public int Id { get; set; } public string Name { get; set; } } class MyContext : DbContext { public DbSet Persons { get; set; } } class Program { static void Main(string[] args) { using (var db = new MyContext()) { var person […]

使用IHttpAsyncHandler异步调用WebService

这是基本设置。 我们有一个ASP.Net WebForms应用程序,其页面包含一个需要访问外部Web服务的Flash应用程序。 由于(安全我认为)Flash的限制(不要问我,我根本不是Flash专家),我们无法直接从Flash连接到Web服务。 解决方法是在ASP.Net中创建Flash应用程序将调用的代理,然后调用WebService并将结果转发回Flash应用程序。 WebSite虽然拥有非常高的流量,但问题是,如果Web服务完全挂起,那么ASP.Net请求线程将开始备份,这可能导致严重的线程饥饿。 为了解决这个问题,我决定使用专为此目的而设计的IHttpAsyncHandler 。 在其中,我将使用WebClient异步调用Web服务并将响应转发回来。 关于如何正确使用IHttpAsyncHandler的网上很少有样本,所以我只是想确保我做错了。 我在这里的示例节目中使用我的用法: http : //msdn.microsoft.com/en-us/library/ms227433.aspx 这是我的代码: internal class AsynchOperation : IAsyncResult { private bool _completed; private Object _state; private AsyncCallback _callback; private readonly HttpContext _context; bool IAsyncResult.IsCompleted { get { return _completed; } } WaitHandle IAsyncResult.AsyncWaitHandle { get { return null; } } Object IAsyncResult.AsyncState { […]

最佳实践 – 格式化多种货币

下面列出的场景的最佳做法是什么? 我们有一个应用程序,我们想支持多种货币。 该软件将尊重用户的区域设置和区域设置,以指定正确的数字格式,即$ 10,000.00或10.000,00₴等。 但是,我们希望能够根据货币ID(可能是三字母ISO4217代码)格式化不同的数字。 我们的想法是使用每种货币在数据库中存储一个表,然后请求用户选择将使用的货币符号。 然后,程序将根据区域设置/区域设置格式化所有数字,但将使用我们程序中定义的货币符号。 因此,给出以下价值和货币 10000澳元 5989.34美元 450欧元 该程序将输出 $ 10,000.00 $ 5,989.34 €450.00 或者使用区域设置将数字格式化为#####,## $结果将是; 10000,00 $ 5989,34 $ 450,00€ 尊重区域设置/区域编号格式但显示不同的货币,最佳做法是什么? 我希望这是有道理的。 使用的技术是c#.NET 2.0。

有没有人使用DNOA实现2 Legged OAuth?

我正在尝试在CSharp中创建一个身份validation模块,我需要使用用于2 Legged OAuth的DotNetOpenAuth(DNOA)库来validation请求中的签名,它只有消费者密钥和密钥。 如果您有任何使用DNOA的2 Legged OAuth示例实现会有所帮助。 如果没有,任何关于如何实施的想法也会起作用。 任何帮助将非常感激。

在NAudio的内存流中将格式从wav更改为mp3

嗨,我试图在内存流中将文本转换为语音(wav)将其转换为mp3然后在用户页面上播放。所以我需要帮助下一步做什么? 这是我的asmx代码: [WebMethod] public byte[] StartSpeak(string Word) { MemoryStream ms = new MemoryStream(); using (System.Speech.Synthesis.SpeechSynthesizer synhesizer = new System.Speech.Synthesis.SpeechSynthesizer()) { synhesizer.SelectVoiceByHints(System.Speech.Synthesis.VoiceGender.NotSet, System.Speech.Synthesis.VoiceAge.NotSet, 0, new System.Globalization.CultureInfo(“en-US”)); synhesizer.SetOutputToWaveStream(ms); synhesizer.Speak(Word); } return ms.ToArray(); } 谢谢。

Activator.CreateInstance – 如何创建具有参数化构造函数的类的实例

我已经在网上阅读了一些关于这个主题的内容,但发现没有一个对我有用。 我要做的是创建一个运行时类型的类。 我使用Activator.CreateInstance ,它适用于具有不包含参数的构造函数的类。 对于那些有参数的人会抛出exception,有没有办法绕过这个? 我非常乐意将空值或空值传递给ctor,只要我可以创建类本身。

处理生产配置中的密码以进行自动部署

我在这里看到了相关的问题,但它们似乎并没有完全回答我的需要。 我们使用Powershell脚本来部署我们的应用程序,并且大多数环境(UAT等)的配置文件中的密码等信息都是纯文本。 这不是一个大问题,但是当谈到PREPROD和PROD时,这是一个大问题。 因此我们在配置中有一些标记,如“{{prompt-password}}”,它将提供登录对话框( Get-Credential ),执行部署的人员可以输入凭据并继续部署。 但这对自动部署没有实际帮助(意味着通过TeamCity等工具一键部署) 我应该使用非对称加密( http://msdn.microsoft.com/en-us/library/as0w18af.aspx ),其中密码使用公钥加密,在配置中输入,并存储私钥(如上所述)这里http://msdn.microsoft.com/en-us/library/tswxhw92.aspx )在“代理”中(如在TeamCity将触发部署的VM中,并且具有受限制的访问权限)运行自动部署并且它可以解密密码? 在密码学和东西上并不是很强大,但这听起来像是要走的路吗? 还有其他建议吗? 人们如何处理这种自动部署? 更新: 好的,我已经开始实施了它。 我在C#中编写了一个使用Crypography库的控制台应用程序。 该应用程序生成密钥: RSACryptoServiceProvider rsa = GetRsa(containerName); File.WriteAllText(“keys.kez”,rsa.ToXmlString(true)); 我也拿出了公钥: File.WriteAllText(“public.pke”, rsa.ToXmlString(false)); 将公钥提供给必须加密密码并要求他们在配置中输入密码的任何人。 将keys.kez文件放在必须运行部署的任何代理中。

类库中的引用不会复制到正在运行的项目bin文件夹中

我有一个代表我的逻辑层的类库。 对于那个库,我为Google.Apis.Analytics.v3添加了一个nuget包 – 它安装了包及其所有依赖项。 我有一个控制台应用程序,它使用该逻辑类库(常规引用)。 一切都写得很好。 问题是在运行时它抛出了一个exception,即找不到Google.Apis.dll。 此DLL是与nuget一起下载的依赖项。 检查BIN文件夹,我发现在类库bin文件夹中存在此DLL,但在控制台应用程序BIN文件夹中却没有(而其他相关的DLL是)。 所以这意味着在编译期间不是所有引用都被复制了。 我在网上搜索过,找到了所有不起作用的解决方法(比如手动编辑项目文件并删除该dll定义中的真正xml行)。 我最终做的是在我的控制台应用程序中添加相同的nuget库 – 它可以工作,但感觉有点脏,而不是应该的方式。 我认为控制台应用程序是客户谁应该从该逻辑类库获取它的服务,应该知道它的东西没有“客户”担心它。 此外,该控制台应用程序不是唯一一个将使用该服务的人,我也计划使用该function的网络应用程序 – 所以我需要将相同的nuget添加到该Web应用程序 – 再次,感觉有点乱…… 只有我吗? 这是正确的方法吗? 我正在考虑编写一个WCF项目来处理这个function – 但这似乎只是在function方面的一些开销,并且可能会减慢我的工作流程,以便在我看来保持“更清洁”。 我只是过度思考了吗? 谢谢

为C#接口定义隐式和显式转换

有没有办法在C#中编写基于接口的代码(即使用接口而不是类作为接受和传递的类型)而不放弃使用隐式转换等内容? 这里有一些示例代码 – 已经删除了很多,但这些是相关的部分。 public class Game { public class VariantInfo { public string Language { get; set; } public string Variant { get; set; } } } 在ScrDictionary.cs中,我们有…… public class ScrDictionary: IScrDictionary { public string Language { get; set; } public string Variant { get; set; } public static implicit operator Game.VariantInfo(ScrDictionary s) { […]