我正在尝试使用我的C#应用程序生成表单电子邮件.我应该在星期五的一个小时内完成这个......但是Outlook非常不听话.
似乎无论我在MailItem的HTMLBody中指定字体大小的方式,它的大小都略有不同.Font face总是按照指定出现,但大小永远不对.
email.HTMLBody = "<p style='font-size:11px;font-family:Calibri;'>girl look at that body</p>";
email.HTMLBody = "<style> body { font-family:'Calibri'; font-size:11px; } </style> <body>girl look at that body</body>";
email.HTMLBody = "<html><header><style> body { font-family:'Calibri'; font-size:11px; } </style></header> <body>girl look at that body</body></html>";
email.HTMLBody = "<span style='font-size:11px;font-family:calibri;'>girl look at that body</span>";
Run Code Online (Sandbox Code Playgroud)
生成8.5大小的字体.
email.HTMLBody = "<html><body><font face='Calibri' size='11px'>girl look at that body</font></body></html>";
email.HTMLBody = "<font face='Calibri' size='11px'>girl look at that body</font>";
Run Code Online (Sandbox Code Playgroud)
产生12号字体.
所以,似乎是通过CSS指定11px(或11pt,也尝试过)字体让我获得8.5px,并且通过字体标签获得12px.
我已经做了一些进一步玩弄这个,基本上,字体标签产生12pt字体,无论如何.所以这是一个死路一条,但我知道字体标签无论如何都被弃用了.CSS标签会给我不同的尺寸,但很少我要求的.它总是关闭,而不是一致的数量.
代码中的font-size =电子邮件中的font-size:
我正在使用FluentValidation来验证对象内部的集合,将集合项的元素与父对象的元素进行比较.
目标输出是接收集合中每个失败项目的ValidationFailures,而不仅仅是收集失败.
我有一个软件订单,包含一个软件项目列表.如果订单是针对旧系统的,则所选软件只能是传统软件,反之亦然,非传统系统只能具有非传统软件.
我的模特:
public class SoftwareOrder
{
public bool IsLegacySystem;
public List<SoftwareItem> Software;
(...other fields...)
}
public class SoftwareItem
{
public bool Selected;
public bool IsLegacySoftware;
public int SoftwareId;
}
Run Code Online (Sandbox Code Playgroud)
验证:
public class SoftwareOrderValidator : AbstractValidator<SoftwareOrder>
{
public SoftwareOrderValidator()
{
(..other rules..)
When(order => order.IsLegacySystem == true, () =>
{
RuleForEach(order => order.SoftwareItem)
.SetValidator(new SoftwareItemValidator(true));
});
When(order => order.IsLegacySystem == false, () =>
{
RuleForEach(order => order.SoftwareItem)
.SetValidator(new SoftwareItemValidator(false));
});
}
}
public class SoftwareItemValidator : AbstractValidator<SoftwareItem>
{
public …
Run Code Online (Sandbox Code Playgroud) 我有一个正在开发的公共库。我们称之为 My.Common。
My.Common 的版本 1 已上传到我的 Intranet Nuget 服务器,并在其他几个库中使用,例如 My.Logging 和 My.Navigation。
在开发通过 Nuget 使用 My.Common、My.Logging 和 My.Navigation 的 .Net Core 应用程序时,我发现了 My.Common 中的一个错误。因此,我需要修复版本 2 的 My.Common。该错误影响应用程序直接使用的功能 - 它对其他库没有影响,它们可以继续使用版本 1。
我打开 My.Common 的代码,尝试修复并编译。在应用程序中,我删除了 My.Common 的 Nuget 包,并在其 bin 文件夹中添加了对 My.Common DLL 的引用。
这时我发现我在应用程序中没有看到 My.Common 的更改。在 My.Common 的“属性”窗口中,路径显示为:
C:\Users\foo\.nuget\packages\my.common\1.0.0\lib\netcoreapp2.0\My.Common.dll
Run Code Online (Sandbox Code Playgroud)
以下是 .csproj 中的引用的外观:
<ItemGroup>
<Reference Include="My.Common">
<HintPath>C:\Projects\My.Common\bin\Debug\netcoreapp2.0\My.Common.dll</HintPath>
</Reference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
尽管我已将其添加为程序集引用,但它正在被覆盖并从其 Nuget 包中提供!
由于程序集和 Nuget 包有不同的版本,我想我可以通过更明确地了解版本来解决这个问题。
<ItemGroup>
<Reference Include="My.Common, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>C:\Projects\My.Common\bin\Debug\netcoreapp2.0\My.Common.dll</HintPath>
<SpecificVersion>true</SpecificVersion>
</Reference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
当设置为 true 时,Visual Studio 似乎根本无法找到程序集 - 属性中的路径为空,并且应用程序填充“(您是否缺少程序集引用?)”错误。 …
.net-assembly visual-studio nuget .net-core visual-studio-2017
我花在SQL Server Management Studio上的80-90%的时间用于处理相同的5或6个表/视图/存储过程,在一些数据库中超过100个.
如果有一种快速方法可以通过GUI访问那些少数人,而不必每天都滚动并且日复一日地切换表/视图/可编程性文件夹,那将是非常有用的.
在我看来,我正在描绘一个最喜欢的或加星标的表格特征或部分,或者也许只是最近的表格菜单将是一个伟大的节省时间.
这是一个隐藏在SSMS中的某个功能还是插件中可用的功能?
CUSIP是一个9位数的字母数字代码,用于唯一标识财务安全性.
https://en.wikipedia.org/wiki/CUSIP
它们是在1964年发明的,并且考虑到60年代数据传输的可靠性,第9位实际上是用于确认前8个字符有效性的校验位.有时候,即使在今天,您也可能有理由想要验证CUSIP,或者公司或服务公司或服务公司决定只传输8个字符的CUSIP,即使这会破坏校验位的目的.
生成校验位的过程是:
根据字母表中的序号位置加上9(A = 10,B = 11,... Z = 35)并转换字符*= 36,@ = 37,#= 38,将非数字数字转换为值.
将每个偶数乘以2
如果乘法的结果是两位数,则将数字相加.(12 = 1 + 2 = 3)
获取所有值的总和.
获取此操作的内含值:(10 - (sum modulo 10))modulo 10.
在C#中获取此值的最佳/最简单方法是什么?
WCF测试客户端似乎没有按任何逻辑顺序放置方法.但是,订单是一致的.在每个环境中都保持不变.
这不是按字母顺序排列的.这不是班级中方法的顺序.WCF测试客户端中的顺序与WSDL中的顺序不匹配.
虽然这不是完全随意的.订单有时与班级匹配.但是,您可以更改类中的顺序,重新编译,并在将服务添加回WCF测试客户端时,它不会更改为匹配.
那么确定订单是什么?
我试图让逻辑分隔符保持我的所有属性在逻辑上分开,但所以我只需要传递一个对象.我所说的是,我想实例化Object,并能够使用Object.InnerObject.InnerObjectsProperty.这是我正在测试的代码,试图弄清楚如何执行此操作:
namespace SubclassTesting
{
class Program
{
static void Main(string[] args)
{
int x;
Console.WriteLine("type a number");
x = Convert.ToInt32(Console.ReadLine());
OuterClass TestClass = new OuterClass();
TestClass.OuterNumber = x;
TestClass.InnerClass.InnerNumber = x;
Console.WriteLine("success!");
Console.ReadKey();
}
}
class OuterClass
{
public OuterClass()
{
_InnerClass InnerClass = new _InnerClass();
}
public int OuterNumber { get; set; }
public class _InnerClass
{
public int InnerNumber { get; set; }
}
public _InnerClass InnerClass { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
此代码在TestClass.InnerClass.InnerNumber = x上失败; with NullReferenceException …
我正在 Visual Studio 中整理一个模板项目供我的部门使用。项目需要引用一些存储在TFS其他地方的常用库。问题是模板可能会在各种位置使用,而我在尝试可靠地设置 HintPath 以处理所有位置时遇到了麻烦。
模板化项目需要能够在本地和 TFS 中找到公共库,以便在构建中使用。目前,在我们现有的应用程序中,引用如下所示:
<Reference Include="Company.Common">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\Core Components\Libraries\Company.Common\Latest\Company.Common.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)
但是到达根节点需要遍历的父节点数量可能会有所不同。
与其为 ../、../../、../../../ 等设置 50 个条件路径,我的第一个想法是设置一个绝对引用。工作文件夹在我们的组织中是标准化的,因此在本地,始终可以在 C:\Projects\Core Components\...
但这不适用于服务器构建。所以我想我需要某种环境变量来解决 $/. 我正在想象这样的事情:
<Choose>
<When Condition="Exists('C:\Projects')">
<ItemGroup>
<Reference Include="Company.Common">
<HintPath>C:\Projects\Core Components\Libraries\Company.Common\Latest\Company.Common.dll</HintPath>
</Reference>
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<Reference Include="Company.Common">
<HintPath>$(TFSRoot)\Core Components\Libraries\Company.Common\Latest\Company.Common.dll</HintPath>
</Reference>
</ItemGroup>
</Otherwise>
</Choose>
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何实现这一点。
更新:
最终,我们确实建立了一个内部 Nuget 服务器。我建议任何有同样困境的人解决任何阻碍您设置 Nuget 的繁文缛节。我们用这种老套的做事方式生活了 3 年,总有一些新的问题需要人工干预。
tfs environment-variables csproj tfsbuild visual-studio-templates