Tag: visual studio 2010

在一个解决方案中从多个项目创建一个NuGet包

我有一个我正在研究的解决方案,它包含4个类库项目( A , B , C , D )。 A和B可以被认为是解决方案中的顶级项目。 A和B参考C , D独立。 这四个项目代表了我处理自动化工作流程的一组服务。 它们都是密切相关的,只会在一个位置(服务管理器)使用,所以我不想将它们分成不同的解决方案。 我的问题是我想创建一个包含所有4个库的NuGet包,而不必全部构建它们并手动收集它们的DLL。 我知道我可以通过让A或B引用剩余的项目来实现这一点,但这不是真正的关系,我觉得应该避免。 我已经做了很多关于这个问题的搜索,除了手动收集DLL并自己构建包之外,我找不到解决方案。 有没有办法达到我想要使用NuGet的function/能力的结果? 注意 :如果标签不清楚我正在使用VS2010和TeamCity构建服务器。 如果它是相关的,我也通过Stash服务器使用Git。 编辑 :我刚刚意识到这可能很重要,值得一提。 这些项目确实引用了我需要标记为依赖项的其他NuGet包。

从VS 2010 C#XML文档生成HTML /帮助文件

我正在寻找一个从我的VS2010 XML文档创建HTML /帮助文件的好工具。 我找到了一些商业工具,比如 .Net文档工具 VSDocman 我相信还有更多,我只列出这两个例子。 还有简单的XSLT样式表来将XML转换为HTML文档。 您在使用什么,例如是否有免费工具进行转换,可能是插件。 只是为了澄清,基本上我找到了两种工具: 以不同的目标格式转换XML文档文件的那些,这就是我正在寻找的。 帮助我在源代码中生成XML文档的工具。 这不是(!)我在寻找什么。 谢谢你的帮助。 Sandcastle / SHFB组合效果很好。 感谢所有帮助过的人。 一些评论: NDoc似乎已经过时,最近的更新是从2005年开始的。这就是我跳过这个的原因。 一个类似的线程,也非常详细,可以在这里找到: 如何将C#Xml Doc-Comments变成有用的东西? 谢谢你的提示! Sandcastle有一些来源,我找到的最新版本位于: http : //sandcastle.codeplex.com/ 为了生成MsHelp2我必须安装包含hscomp.exe VS 2008 SDK。 有一个版本1.0和1.1,据我所知,版本1.0包含编译器。 有关详细信息,请参阅Helixsoft和Social MSDN 。 在我的情况下,生成的WebHelp无法与Chrome正常工作。 它总是重新加载index.html页面。 此处的主题显示如何将命名空间信息添加到sandcastle文档中。 截至2012年11月更新:对于我使用Doxygen的小型项目 – 我发现它更容易配置。

Open / SaveFileDialog类与它们在WPF表单中的使用之间的区别

非常好奇,但只是想知道是否有人知道使用之间的区别: System.Windows.Forms.SaveFileDialog(在Assembly System.Windows.Forms.dll中)和Microsoft.Win32.SaveFileDialog(在Assembly PresentationFramework.dll中)? 我在WPF表单中使用PresentationFramework.dll版本,但我目前正在重新使用表单中的一些旧代码,其中包括显示System.Windows.Forms.dll版本并想知道是否: 他们的外表有细微差别吗? 使用System.Windows.Forms.SaveFileDialog的任何互操作性问题? 或者这两个只是win32对话框? 这与使用Microsoft.Win32.SaveFileDialog在Windows Vista中有问题有关吗? 提前致谢。

使用MSI安装版本设置AssemblyInfo版本号

我正在使用安装项目来发布我的项目。 我希望每个项目的版本与安装版本相同。 我想在Visual Studio中更改我的安装版本属性,并且在构建之后,对于要从此属性更新的所有项目版本,这可能吗?

如果将委托定义放在另一个项目中,则编译失败?

更新:我已经将此作为Microsoft Connect上的问题提交,如果您可以重现这一点和/或希望看到此修复,请帮助在那里投票解决问题。 我一直试图解决这个问题好几个小时了。 非常感谢您能想到的任何想法/建议。 首先,我有3个文件Class.cs Definitions.cs和Program.cs 。 我已经在http://pastie.org/1049492粘贴了文件内容供您试用。 问题是,如果在同一控制台应用程序项目中有所有3个文件。 应用程序编译并运行得很好。 但是,如果我在一个“库”项目中有Class.cs和Definitions.cs ,它从只有Program.cs文件的主控制台应用程序项目中引用,则编译失败: 代表Act没有2个论点。 无法将lambda表达式转换为委托类型’DC.Lib.Produce’,因为块中的某些返回类型不能隐式转换为委托返回类型… 这是一个包含3个项目的完整解决方案 – 1个将所有文件组合在一起,另一个项目放在另一个项目中: http://dl.dropbox.com/u/149124/DummyConsole.zip 我正在使用VS2010 RTW专业版。

预构建事件:使用XCopy将文件夹及其子文件和文件复制到构建目录中

我有Window Application,我有一些插件,它是我放在My Application文件夹结构中的ChildPlugins(参见文件夹结构图)。 我使用SVN作为源代码控制,因此,每个文件夹都有.SVN文件夹。 这是我的问题: 下图是我的插件目录结构。 所有文件夹都有一些与插件相关的文件。 现在我想通过使用Pre Built Event将所有文件夹(包含SubFolders)及其文件复制到我的Application Build输出路径。 在网上搜索后,我发现通过使用XCopy我可以实现我想要的。 通过使用下面的代码,我可以复制插件目录及其文件,但无法复制它的子文件夹和子文件夹文件。 xcopy “$(SolutionDir)Plugins\*.*” “$(SolutionDir)Windows\Host\Host.GUI\bin\x86\$(ConfigurationName)\Plugins\” /Y/D 我想复制文件夹&它是包含所有文件的所有子文件夹,并且想要排除.SVN 。 谁能指出我怎么能这样做? 谢谢。

当Debug.Assert失败时导致VS2010调试器中断

当Debug.Assert的参数Debug.Assert值为false时,是否有任何方法可以在调试时导致Visual Studio 2010中断? 示例:在我的代码中,我有这样的行: Debug.Assert(!double.IsInfinity(x)); 如果我没有调试,则在断言失败时会弹出一个窗口。 但是当我调试时,断言会记录到“输出”窗格中,这很容易被遗漏; 没有弹出窗口,调试器不会停止。 因此:当Debug.Assert失败时,有没有办法强制Visual Studio调试器中断? (顺便说一句:我正在开发一个基于WPF的桌面应用程序。在Windows窗体应用程序中,行为似乎有所不同:这里,调试器在Debug.Assert上Debug.Assert 。) 编辑 :请让我澄清:我不是在寻找Debug.Assert()的替代方法,因为我使用的代码和外部代码充满了Debug.Assert()语句。 我正在寻找一种方法来导致Visual Studio调试器在Debugg.Assert失败时Debugg.Assert 。 (我认为早期的VS版本就是这样做的,并且VS2010中的行为发生了变化)。

为什么我不能将某些文件类型添加到VS2010项目中?

我正在尝试将WPF ResourceDictionary添加到刚刚创建的C#项目中。 该项目最初不是WPF项目,但现在我需要在其中包含一些WPF资源。 当我右键单击项目并选择“添加”时,ResourceDictionary不是一个选项。 即使我打开modal dialog并导航到ResourceDictionary类型应该在的位置(与其他WPF类型一起),它也不存在。 此外,当我手动将具有ResourceDictionary语法的XAML文件添加到项目时,我无法使用WPF Application.Load(uri)语法以编程方式加载它,所以我觉得VS2010阻止我添加文件是有原因的。 如何让我的项目“能够”添加ResourceDictionary而无需从头开始重新创建整个项目作为WPF项目并从头开始重新添加每个文件? 另外,什么定义了可以添加到项目中的文件类型,以便将来可以避免类似的问题? 希望它像我需要添加到AssemblyInfo.cs文件中的一行一样简单。

C#编译器版本和语言版本之间的区别

曾经有一段时间我认为Framework版本和C#版本是相同的,所以一旦你在计算机上安装下一个Framework版本,就应该使用它。 然后我发现框架没有直接与C#版本链接,并且在同一台机器上,多个C#编译器可以同居,所以编译器和C#版本可能是相同的。 现在我明白编译器版本和C#版本不一样了…… Visual Studio命令提示符( 2010 ): C:\>csc Microsoft(R)Visual C# 编译器版本4 .0.30319.33440 适用于Microsoft(R).NET Framework 4.5 VS 2013的开发人员命令提示符: C:\>csc Microsoft(R)Visual C# 编译器版本12 .0.30110.0 对于C#5 我们可以看到 – VS 2010使用编译器版本4.0用于C#4(我只能假设它,因为没有明确提到); – VS 2013使用C#5的编译器版本12.0(这是明确提到的) 知道使用不同语言版本进行编译可能会给用户带来不同的结果 问题 如何找出C#版本 (不是编译器版本 ,而是语言版本)使用VS来构建我的具体项目? C# 编译器和语言版本之间是否存在严格,清晰和透明的链接? 我是否可以向Visual Studio指出(如果从一个Studio版本迁移到另一个版本),为我的具体解决方案使用不同的编译器版本?

如何使用ngen.exe进行编译以及如何运行生成的本机代码?

我想使用ngen命令行编译一个C#程序用于特殊目的。 所以我在VS2010中创建了一个控制台应用程序并命名为ngentest 。 在vs2010\projects\ngentest\bin\debug创建名为ngentest.vshost.exe的文件。 我在VS2010命令提示符中使用此文件作为ngen命令参数,如下所示: ngen “c:\documents\vs2010\projects\ngentest\bin\debug\ngentest.vshost.exe” 但是当我这样做时,我无法接收PublicKeyToken ,我无法在任何地方找到任何组件! 如果我的程序集已创建,它在哪里? 我怎么能找到它? 我如何运行它(使用命令,或……!)来获取输出? 否则,当我从VS的Build菜单中使用build ngen构建我的项目时,会在提到的目录中创建一些文件,其中一个是ngentest.exe 。