Tag: msbuild

使解决方案中的每个csproj成为不同的C#版本

我有一个包含五个C#控制台应用程序项目的解决方案。 我希望每个项目都针对不同版本的C#。 MyLearningSolution.sln CSharp01.csproj CSharp02.csproj CSharp03.csproj CSharp04.csproj CSharp05.csproj 有没有办法通过Visual Studio或通过编辑每个csproj文件来做到这一点? 我尝试了以下搜索: csproj目标特定的C#版本 ,这是关于针对特定框架版本的 csproj选择c#版本 ,不回答问题

sgen.exe在构建期间失败

在更改visual studio项目的输出目录后,它开始无法构建,并且错误非常类似于: C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\sgen.exe /assembly:C:\p4root\Zantaz\trunk\EASDiscovery\EASDiscoveryCaseManagement\obj\Release\EASDiscoveryCaseManagement.dll /proxytypes /reference:C:\p4root\Zantaz\trunk\EASDiscovery\EasDiscovery.Common\target\win_x32\release\results\EASDiscovery.Common.dll /reference:C:\p4root\Zantaz\trunk\EASDiscovery\EasDiscovery.Export\target\win_x32\release\results\EASDiscovery.Export.dll /reference:c:\p4root\Zantaz\trunk\EASDiscovery\ItemCache\target\win_x32\release\results\EasDiscovery.ItemCache.dll /reference:c:\p4root\Zantaz\trunk\EASDiscovery\RetrievalEngine\target\win_x32\release\results\EasDiscovery.RetrievalEngine.dll /reference:C:\p4root\Zantaz\trunk\EASDiscovery\EASDiscoveryJobs\target\win_x32\release\results\EASDiscoveryJobs.dll /reference:”C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Shared.v8.1.dll” /reference:”C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.Misc.v8.1.dll” /reference:”C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinChart.v8.1.dll” /reference:”C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinDataSource.v8.1.dll” /reference:”C:\Program […]

PostSharp后pdb文件正在酝酿之中

我正在使用PostSharp版本2.1.6.4(也尝试了最新版本2.1.7.35),有时pdb文件丢失,并且有一个pssym文件。 我在构建过程中运行了procmon,据我所知, postsharp.srv.4.0-x86.exe进程将dll和pdb文件从obj\Debug文件夹移动到obj\Debug\Before-PostSharp文件夹,然后生成一个obj\Debug文件夹中的新dll,但未生成新的pdb文件 。 对于我的一些dll(看似随机)会发生这种情况并且似乎不可靠,因为在其他机器上所有pdb文件都是正确生成的。

MSBuild 15 – 命名空间中不存在类型或命名空间“Fakes”

我正在尝试为一个项目设置自动构建和unit testing,该项目使用Fakes库进行unit testing。 该项目在我的Windows 10 PC(安装了VS 2017 Enterprise)上构建和测试正常,但是使用相同的命令在构建服务器(也是VS 2017 Enterprise的Windows 10)上编译项目会产生关于Fakes not existing的几个错误。 确切的错误如下所示: XControllerTests.cs(10,20): error CS0234: The type or namespace ‘Fakes’ does not exist in the namespace ‘System.Data.Common’ (are you missing an assembly reference?) [C:\Runner\builds\xxx\XTests.csproj] 根据我的研究,这是由使用旧版本的MSBuild引起的,但是我检查了服务器,并确认它已安装了visual studio的最新版本和更新。 我还确认构建脚本使用的是正确版本的MSBuild.exe,即c:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe 。 在我的桌面上使用此版本正确编译项目。 为什么构建不能在(相同的设置)构建服务器上运行?

构建失败。 有关详细信息,请参阅构建日志

我创建一个新项目,单击编译,并收到此错误: 构建失败。 有关详细信息,请参阅构建日志 在构建日志中只有这样: Building: FirstProgram (Debug|x86) ———————- Done ———————- Build failed. Build: 1 error, 0 warnings 这是我看到的: 是什么导致此错误,我该如何解决?

MSBuild如何决定是否需要重建C#库?

当MSBuild针对C#项目文件运行时,它是如何决定是否需要重建库(即调用csc)? 我想(但想确认): 如果没有输出目录,重建(duh :)) 如果C#文件已更改,请重建 如果标记为“复制”的包含文件始终更改,则重建 或者它是否足够聪明,不能重建,只是将文件复制到现有输出? 如果标记为copy-if-newer的包含文件已更改,则重建 与上述问题相同

csproj文件中的多个提示路径来自文本文件变量

上下文:在我们的应用程序中有两个独立的dll,它们是为不同类型的硬件配置的变量存储库。这些dll具有相同的名称并从我们的应用程序中引用,现在每次如果我们想要测试我们必须复制的不同类型的硬件相关的dll到应用程序运行的位置。 我正在寻找一种解决方法。 参考文献:我见过以下post, 1) .csproj程序集的多个提示路径 2) https://whathecode.wordpress.com/2012/10/07/conditional-project-or-library-reference-in-visual-studio/ 问题:我可以在文本文件中声明一个变量,如 type1 并在我的csproj文件中导入该文本文件并为我的应用程序分配适当的引用吗? 任何帮助.. 以下是复制我们项目的测试应用程序。 SignalPool1,SignalPool2具有相同的类名,并且是我们项目的两个不同位置可用的两种不同硬件配置的存储库。 如果我们想测试硬件1,我们将删除当前引用并添加相关信号池的引用,这同样适用于hardware2。 现在为了避免这种手动工作,我想自动化这个过程要么在XML上声明一个变量并访问csproj文件中的变量来决定在编译/运行时访问哪个变量。 目前为了避免这个问题,我有一个单独的exe,它读取xml并决定将它们复制到一个公共文件夹中。这个exe将在我们项目中的prebuild事件时被调用。 //信号池1文件 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SignalPool { public abstract class SignalPool { public abstract string PreExec(); public abstract string PostExec(); public abstract string VnVExec(); public static string HWVar1 = “HWVar1”; public static string HWVar2 […]

在为Outlook 2010构建插件时,FindRibbons任务意外失败

我们正在使用VS2013,.NET4,Microsoft Async和BCL Portability(来自Nuget)构建Outlook 2010插件,并遇到类似于此问题的构建错误,不幸的是这个论坛讨论这些资源(或其他互联网)都没有帮助解决我们的问题。 构建错误和Fusion日志位于底部。 我的第一个问题: 如何解决此FindRibbons构建任务? 从VS目标文件中完全删除它可以完成构建,但代价是没有function区控件。 我们的第二个症状是Fusion日志的Attempting download部分。 DLL在我们的项目bin\Debug目录下构建,因此其他目录搜索是奇数。 这提出了我的第二个问题: 我们忽略的Fusion日志中是否有症状? 最后一个症状来自详细的构建日志,我们在其中看到mscorlib,System.Core和其他几个库之间的冲突。 这些依赖项通过Bcl等进入,4.0.0.0与2.0.5.0冲突似乎可以防止构建或生成FileNotFoundException。 我们使用绑定重定向等尝试了许多补救措施,但无法使其工作。 最后一个问题: 此版本的解决方案或故障排除提示构建冲突? 提前谢谢了。 对不起,长度。 正如承诺的构建失败: Error 1 The “FindRibbons” task failed unexpectedly. System.IO.FileNotFoundException: Could not load file or assembly ‘myDocketOutlookAddIn, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null’ or one of its dependencies. The system cannot find the file specified. File name: ‘myDocketOutlookAddIn, Version=1.0.0.0, […]

自定义MSBuild任务:如何在任务仍在运行时刷新VS2012输出窗口中的日志记录?

我有一个自定义的MSBuild任务,需要一些时间才能完成。 它使用Log.LogMessage()或BuildEngine.LogMessageEvent() (两者都尝试)输出进度。 我的问题是,在任务完成之前,所有输出都不会出现在VS2012输出窗口中,从而使进度更新无效。 我希望在任务运行时立即显示输出。 我发现各种线程解释经常调用Application.DoEvents() ,但这似乎并没有解决问题(也许它只适用于VS2010及之前?)。

从两个不同的位置安装ClickOnce应用程序

我有一个在.NET Framework 3.5,Service Pack 1中使用C#开发的Windows窗体应用程序。可以基于开发数据库和生产数据库发布应用程序。 我正在使用MSBuild社区任务来发布我的应用程序。 将应用程序发布到不同位置(即开发位置和生产位置)时,我不会遇到任何问题。 问题: 将开发应用程序安装到我的机器后,我无法安装生产应用程序。 它给我一个错误说: 您无法从此位置启动应用程序TEST,因为它已从其他位置安装 问题:机器如何理解我正在尝试安装相同的应用程序? 我认为它有某种应用程序ID。 如果是这种情况,我可以根据位置覆盖相关值。 (DEV或PROD) 在我的应用程序的项目文件中发布时的当前代码: \\A\B\development\ Data Source=SQL-DEV.company.com; Database=TEST;Uid=XYZ;Pwd=ABC; \\A\B\production\ Data Source=SQL-PROD.company.com;; Database=TEST;Uid=XYZ;Pwd=ABC; 应用程序的发布就像一个魅力,并指向相关的数据库。 我现在要做的就是能够在同一台机器上安装开发应用程序和生产应用程序而不会出现任何错误。 问题:一次应用程序与另一次应用程序的区别是什么?