我有一个FixedDocument允许用户在 WPF GUI 中预览,然后打印到纸上而不显示任何 Windows 打印对话框,如下所示:
private void Print()
{
PrintQueueCollection printQueues;
using (var printServer = new PrintServer())
{
var flags = new[] { EnumeratedPrintQueueTypes.Local };
printQueues = printServer.GetPrintQueues(flags);
}
//SelectedPrinter.FullName can be something like "Microsoft Print to PDF"
var selectedQueue = printQueues.SingleOrDefault(pq => pq.FullName == SelectedPrinter.FullName);
if (selectedQueue != null)
{
var myTicket = new PrintTicket
{
CopyCount = 1,
PageOrientation = PageOrientation.Portrait,
OutputColor = OutputColor.Color,
PageMediaSize = new PageMediaSize(PageMediaSizeName.ISOA4)
};
var mergeTicketResult = selectedQueue.MergeAndValidatePrintTicket(selectedQueue.DefaultPrintTicket, myTicket);
var …Run Code Online (Sandbox Code Playgroud) 更新:在确定导致ASP.NET/Razor错误的原因后更新了问题.
我有一个ASP.NET MVC3项目,它引用了一个C++/CLI项目,该项目被配置为编译为x64,因为它必须在Windows Azure中运行(C++/CLI的No AnyCPU设置).
问题是,只要我将C++/CLI项目的平台设置配置为x64(在Build-> Configuration Manager中),构建解决方案,然后打开一个随机视图我收到有关ASP.NET尝试加载的警告不正确的格式汇编后跟一堆由Razor语法错误引起的错误.
一些随机视图的截图:

日志的屏幕截图:

主要错误是:
警告:ASP.NET运行时错误:无法加载文件或程序集"LZGEncoder"或其依赖项之一.尝试加载格式不正确的程序.
即使发生了这种情况,我仍然可以编译并运行解决方案,并且使用引用的C++/CLI程序集就好了,所以这不会阻止开发,但这是一个真正的麻烦(特别是当它阻止IntelliSense时我无法看到我的Razor代码中有任何真正的错误).
如果我将我的C++/CLI平台重置为Win32,那么所有错误都会消失,但是当运行解决方案时,我得到了相同的错误格式错误,但在我的MVC3网页中.
这是ASP.NET中的错误还是我忘了配置某些东西?我能够在工作和家中(有和没有Azure)重现错误,所以我不认为这是我的VS2010安装.谢谢.
更新:
现在我创建了一个C#包装器,使用P/Invoke直接调用C库,它工作得很好,所以我甚至不再需要C++/CLI包装器,但是这不能回答这个问题所以我会保持开放.
我怀疑它是MVC3/Razor或VS2010中的一个错误,两者都有新版本即将问世.
如何使ProjectTo正确映射不同的派生类型,而不将其强制转换为基本类型?
这对于Mapper.Map可以正常工作,但对于ProjectTo则不能。
源类:(EntityFramework模型)
public class FailureAlertEntity : AlertEntity
{
public FailureAlertEntity(int id, string description) : base(id)
{
Description = description;
}
public string Description { get; set; }
}
public class AlertEntity
{
public AlertEntity(int id)
{
ID = id;
}
public int ID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
目标类别(DTO模型):
public class FailureAlert : Alert
{
public FailureAlert(int id, string description) : base(id)
{
Description = description;
}
public string Description { get; set; }
}
public class Alert
{ …Run Code Online (Sandbox Code Playgroud) 我有一个包含非托管C压缩库的C++/CLI项目,该项目由调用C++ Compress函数的MVC3项目引用.
一切都在本地工作正常,但当我将解决方案发布到Azure云时,我得到一个错误,说它无法找到模块/ dll:
无法加载文件或程序集"LZGEncoder.DLL"或其依赖项之一.指定的模块无法找到.
为什么找不到DLL文件?是去了错误的地方还是正在编译?有什么方法可以检查吗?谢谢!