从我正在构建的应用程序中,我需要打印现有的PDF(由另一个应用程序创建).如何在C#中执行此操作并提供一种机制,以便用户可以选择其他打印机或其他属性.
我看过PrintDialog,但不确定它试图打印什么文件,如果有的话,b/c输出总是一个空白页面.也许我只是错过了一些东西.
我是否需要使用"iTextSharp"(如其他地方所建议的那样)?这对我来说似乎很奇怪,因为我可以"将文件发送到打印机"我手边没有任何好的对话框来设置打印机等.我真的不想从头开始编写打印对话框但似乎我通过搜索找到的很多例子都是这样的.
任何建议,示例或示例代码都会很棒!
此外,如果PDF是问题,文件可以由另一个应用程序以差异格式创建,如位图或png,如果这使事情更容易.
我正在尝试使用Xunit设置我的测试.我要求删除测试文件夹开头的所有图像,然后每个方法都会调整一些图像大小,并将其输出的副本保存到文件夹中.该文件夹应该只清空一次,然后每个方法将自己的图像保存到该文件夹中.
当我使用时IUseFixture<T>,ClearVisualTestResultFolder在每次测试之前仍然会调用该函数,所以我最终只在文件夹中有一个图像.
public class Fixture
{
public void Setup()
{
ImageHelperTest.ClearVisualTestResultFolder();
}
}
public class ImageHelperTest : IUseFixture<EngDev.Test.Fixture>
{
public void SetFixture(EngDev.Test.Fixture data)
{
data.Setup();
}
public static void ClearVisualTestResultFolder()
{
// Logic to clear folder
}
}
Run Code Online (Sandbox Code Playgroud)
如果我把ClearVisualTestResultFolder它放在构造函数中,它也会为每个测试方法调用一次.我需要在执行所有测试方法之前运行一次,我该如何实现?
如果重要,我使用ReSharper测试运行器.
就像我在这个问题的标题中所说的那样,是否可以附加键盘快捷键以使用Visual Studio 2012折叠解决方案资源管理器中的所有项目?
在以前的版本; 2010年,我能够创建一个宏来启用此功能,但在Visual Studio 2012中,不再支持宏.
我可以右键单击解决方案资源管理器中的项目,然后选择"全部折叠",但我更喜欢键入"Ctrl + Shift + C"来执行相同的工作.
当我在global.cs文件中进行绑定时,我不太确定何时应该使用SingletonScope()vs TransientScope()vs RequestScope().
我有一个例如我对MongoSession的调用(使用NoRM和mvcStarter项目http://mvcstarter.codeplex.com/)设置为SingletonScope但是我创建了一个使用这个MongoSession对象的存储库来更容易地调用Mongo,例如,我有一个NewsRepository,它使用MongoSession从数据中获取我的新闻项.作为一个例子,我有一个调用,它获取DisplayOnHome设置为true的新闻项目,并获取CreationDate的最新信息.这样的存储库应该是SingletonScope还是RequestScope会更合适?
我什么时候应该使用它们?为什么?
作为我的一个项目的一部分,有"BeforeBuild"任务最终生成一些文件.特别是,它将一个小的静态类(在项目中包含为"不编译")编译成它自己的可执行文件,然后执行它,传入一个外部输入文件,输出一个新生成的类,包含在项目中.
我将它编程为将中间文件放在项目$(OutDir)中,但发现在"Rebuild"(最终是"Clean")中,这些文件没有被拾取.经过一番思考后,我意识到最终生成的类放在$(ProjectDir)中也应该在"Clean"上删除.
对Microsoft.Common.targets的一些调查显示,中间路径(obj\build\assembly.FileListAbsolute.txt)中有一些"主列表",它们被查询要删除的文件.
是否有一些标准方法将我的新文件添加到MSBuild中的此列表中以清除它们,或者这种事情是否适合"BeforeClean"(或"AfterClean")目标覆盖?
我想要一个通用的解决方案,但作为一个例子,假设我有一个IEnumerable<string>,其中一些可以解析为整数,有些不能.
var strings = new string[] { "1", "2", "notint", "3" };
Run Code Online (Sandbox Code Playgroud)
显然,如果我这样做,Select(s => int.Parse(s, temp))它会在枚举时抛出异常.
在这种情况下,我可以先做.All(s => int.TryParse(s, out temp)),但我想要一个通用的解决方案,我不必枚举IEnumerable两次.
理想情况下,我希望能够执行以下操作,它调用我的魔术异常跳过方法:
// e.g. parsing strings
var strings = new string[] { "1", "2", "notint", "3" };
var numbers = strings.Select(s => int.Parse(s)).SkipExceptions();
// e.g. encountering null object
var objects = new object[] { new object(), new object(), null, new object() }
var objecttostrings = objects.Select(o => o.ToString()).SkipExceptions();
// e.g. …Run Code Online (Sandbox Code Playgroud) 我参与开发沙盒式Microsoft Dynamics CRM 2011 Online插件并拥有一组测试,我可以从本地计算机上的xUnit前端驱动,因为我右键单击Package并选择Deploy选项(并求助于当不起作用时使用插件加载器示例).
我希望能够在我的CI装备上自动运行我的测试,我需要它在每次运行时上传一个新的二进制文件.
我们已经看过http://pluginregcrm2011.codeplex.com/,但它有阻止它在网上工作的错误,简而言之,它不再被维护,我不想热衷于拥有应该是什么平台/生态系统应该拥有的工具.
是否有人以非交互方式使用该工具或其他插件上传器?我错过了什么吗?
continuous-integration acceptance-testing dynamics-crm dynamics-crm-2011 dynamics-crm-online
我有一个msbuild项目,它从visual studio构建一个SLN文件,它包含所有项目(大约70多个项目),并且许多项目彼此依赖,这意味着它们需要按顺序构建 - 有时开发人员会忘记在解决方案文件中的visual studio中手动设置构建顺序,导致干净解决方案上的msbuild失败,因为某些内容无序构建/无法找到dll.
有没有办法让msbuild采取所有项目并计算出依赖关系并按顺序构建项目,如果我有这样做的话?使用MSBuild任务?使用当前尝试,它似乎只是按照它读取项目的顺序构建 - 如果我传入项目文件列表+路径.
目前我能想到解决这个问题的唯一方法是外部应用程序,它扫描proj文件和引用,然后每次手动创建一个解决方案..但这对于这么简单的事情来说似乎有些过分.
以前有人解决/见过这个吗?
我有以下课程:
class Foo
{
public Foo(string str, int i, bool b, DateTime d, string str2)
{
.....
}
}
Run Code Online (Sandbox Code Playgroud)
我正在Foo使用AutoFixture 创建一个:
var foo = fixture.Create<Foo>();
Run Code Online (Sandbox Code Playgroud)
但我希望AutoFixture为str2参数提供已知值,并为每个其他参数使用默认行为.
我尝试实现一个SpecimenBuilder但我无法找到一种方法来获取与请求相关联的元数据,以便知道我是从Foo构造函数调用的.
有没有办法实现这个目标?
我使用Visual Studio 2008创建了一个Web服务代理,它为我创建了app.config中的以下条目:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="MyNameHandlerSoapBinding" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://www.***/***/***"
binding="basicHttpBinding" bindingConfiguration="MyNameHandlerSoapBinding"
contract="***.MyNameHandler" name="MyName">
</endpoint>
</client>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
webservice有用户名/密码验证,所以我需要在这里添加它.
我在WCF文档的海洋中有点迷失,我想我必须从basicHttpBinding更改为wsHttpBinding或customBinding才能添加身份验证元素,但我真的不明白它.任何人都可以提供任何快速提示或任何有用的链接,说明如何做到这一点?
编辑:
我将安全部分更改为:
<security mode="Transport">
<transport clientCredentialType="Basic" proxyCredentialType="None"
realm="" />
</security>
Run Code Online (Sandbox Code Playgroud)
并在代码中添加:
ws.ClientCredentials.UserName.UserName = "";
ws.ClientCredentials.UserName.Password = "";
Run Code Online (Sandbox Code Playgroud)
现在它似乎可能正在使用凭据,但它给了我错误:
提供的URI方案'http'是无效的URI预期'https'
我甚至都不知道这是不是正确的方法......
c# ×5
msbuild ×2
asp.net ×1
asp.net-mvc ×1
autofixture ×1
dynamics-crm ×1
ienumerable ×1
linq ×1
mongodb ×1
ninject ×1
norm ×1
printing ×1
wcf ×1
wcf-security ×1
word-wrap ×1
xunit ×1
xunit.net ×1