我正在用C#开发一个.NET库,它必须解决一系列广泛的目标框架。 我想生成一个nuget包,可以根据目标项目的设置正确安装。 为了实现这一点,我使用多个.csproj文件。 他们每个人都在寻址一个特定的目标框架(例如MyLibrary.net45.csproj会在bin/*/net45创建二进制文件,MyLibrary.netstandard1.2.csproj会在bin/*/netstandard1.2创建输出,所以上)。 然后我用上面项目的输出创建一个nuget包。 在此阶段,不同的.csproj文件重用相同的AssemblyInfo.cs文件,从而在那里使用共享设置。 我一直想知道所有不同的目标框架对[assembly: Guid(“…”)]属性使用相同的值是否正确,或者每个目标框架二进制文件是否应该使用自己的独特框架构建?
我有一个相当复杂的应用程序,它被分解为多个组件。 每个组件都有一个包含大量项目的解决方案文件。 所以我喜欢把它想象成一个组件中有多个项目/ dll。 还有一个“共同”组件。 所有其他组件都依赖于“共同”。 所以编译是这样的: “nant component1.compile”将编译“common”然后编译component1,因为component1依赖于“common”。 随着时间的推移,“共同”变得相当大。 我很确定它可以分成几个较小的组件。 然后组件需要仅依赖于这些较小的,破碎的“共同”中的一些。 这有望减少不同组件的编译时间。 所以问题:我想要显示应用程序中所有不同项目之间的依赖关系,同时标记项目所属的组件。 你会怎么做?
我在我的csproj文件中设置一些配置,这些配置将针对不同的框架版本。 理想情况下,我想要’Debug – 3.5’,’Debug – 4.0’,’Release – 3.5’和’Release – 4.0’的配置。 在我的csproj文件中,我想做类似以下的事情: v3.5 </PropertyGroup v4.0 </PropertyGroup … check for "starts with Debug" to define Optimize etc. 但是,我不知道如何检查${Configuration}以特定字符串开头/结尾。 是否有捷径可寻? 编辑 :下面标记的答案指出我正确的方向,这导致我去: … setup pdb, optimize etc. … set target framework to 3.5 … and so on for Release and 4.0 variations
是否可以将.csproj中的信息拆分为多个文件? 有点像partial classfunction的项目版本。
我知道这不是一个编程问题,但它是一个编程工具问题。 在Visual Studio 2008 Team Edition(带有.NET 3.5 SP1的9.0版)中,当我将引用从一个csproj复制并粘贴到另一个csproj时(使用“解决方案资源管理器”视图中的上下文菜单),我收到以下错误: 错误HRESULT E_FAIL已从调用COM组件返回 这刚刚开始在我的机器上发生。 我只能找到关于它的这篇文章,它不包含任何解决方案。 有任何想法吗?
上下文:在我们的应用程序中有两个独立的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 […]
我正在尝试为我的C#项目的每个构建配置设置一个不同的Icon(使用VS 2010 pro)。 一个配置适用于不同的客户,因此该配置应使用不同的图标。 我不确定为什么这在csproj文件中不起作用: …blah… Images\RegularIcon.ico …blah… Images\CustomerIcon.ico 它不起作用。 不确定我是否走在正确的轨道上。 令人沮丧的事情……如果我在Visual Studio中使用Properties-> Application选项卡设置图标,它会在csproj文件中创建: Images\foo.ico 为什么要遵守此匿名PropertyGroup中指定的图标,但是条件PropertyGroup中的图标会被忽略? 我很感激这个帮助。
我正在定制一个.csproj项目,以便在主构建之前运行一些自定义任务。 但是,我根本无法执行任务。 我取消注释.csproj文件中的元素,并添加了一个简单的Message任务,但是当我构建时,消息没有出现在我的输出中,所以看起来任务没有运行。 所以这个片段不输出消息; 清单1:没有消息出现 但是,如果我搞砸了一些属性,我可以让.csproj完全无法执行; 清单2:MSBuild配置错误 请注意XXImportance属性。 我得到的构建错误是 My.csproj(83,46): error MSB4064: The “XXImportance” parameter is not supported by the “Message” task. Verify the parameter exists on the task, and it is a settable public instance property. 这表明正在解析XML,已找到Message类,并且该类正在反映可用属性。 为什么这项任务不会执行? 我正在使用3.5框架。 更新1:在@Martin的建议下,我试图在控制台上运行MSBuild,并得到了这个错误; c:\path\to\my.csproj(74,11): error MSB4019: The imported project “C:\Microsoft.CSharp.targets” was not found. Confirm that the path […]
尝试在visual studio 2012中加载一些项目时出现以下错误: G:\path\project.csproj : error : The value “” of the “Project” attribute in element is invalid. Parameter “path” cannot have zero length. 在svn结账后,我正在尝试这个机器。 这些项目可以正确加载到其他机器上。 有人可以帮我解决这个问题吗? 谷歌没有给我答案,我希望如此。 编辑 这是csproj文件的相关部分。
在Visual Studio 2017 RC中是否有像msbuild中的AfterBuild Target和.NET Core? 我尝试将以下剪辑添加到.csproj文件中,但在构建期间不会执行此操作(与VS2015相反,它可以正常工作)。 另一个有趣的发现:我认为AfterBuild目标可能已被删除 – 运行msbuild /t:AfterBuild似乎没有调用添加的目标。 如果我将目标重命名为“Test”,则使用msbuild /t:Test调用它msbuild /t:Test它的工作正常。 另外,是否有关于Visual Studio 2017 RC附带的msbuild版本(以及可能的.NET Core构建脚本)的任何文档?