Tag: build process

错误MSB4006:涉及目标的目标依赖关系图中存在循环依赖关系

我使用VS2012在csproj文件上有以下目标,我希望在构建完成后在项目上运行“发布”。 这给了我以下错误“错误MSB4006:在涉及目标的目标依赖图中存在循环依赖”AfterBuild“” 我尝试用。替换MSBuild步骤 执行上述操作会导致构建/发布反复运行。 我试过命名目标不同,通过另一个目标调用它无济于事。 如何在项目上运行“发布”而不进入重复循环? 这可以用另一种方式完成吗?

C#编译/构建增量过程吗?

我们的解决方案包含许多C#项目。 它们之间存在复杂的依赖关系,例如。 项目A / B / C,B上的家属,B上的家属。如果我在项目C中更改了一个文件,然后重建解决方案,项目A,B,C将一起重建。 在C ++中,build包含两个进程,编译和链接。 如果我在项目C中更改了一个文件,那么我构建解决方案,将编译A和B中的相关文件(其他文件将不会被编译,其.obj将在链接过程中重用),然后进行链接。 在java中,只需重新编译项目C中的已更改文件,其他文件将保留,然后打包到.jar。 它重用以前的工作输出(未更改文件的.class)。 总之,C#不重用任何以前的工作输出。 它没有像Java的.class和C ++的.obj那样的任何中间文件。 所以在这一点上,我觉得C#不做增量构建过程。 一些小的改变将导致一个大的构建过程。 我不明白为什么C#不使用以前的工作输出来加速构建过程。 我不确定我对C#编译/构建过程的理解是否正确。 你能帮忙解释一下吗? 非常感谢。

C#项目文件的多个输出路径

我可以使用多个输出路径吗? 就像我构建我的项目时,exe应该生成两个不同的路径。 如果是这样,我如何在Project Properties-> Build – > output path中指定? 我尝试过使用,并且; 但这些都不起作用。

创建MSBuild自定义任务以在* compile之前修改C#代码*

我想创建一个自定义的MSBuild任务,在csc.exe编译之前更改我的.cs文件(当然,这不会修改它们 – 我不希望触及实际的源文件)。 我知道PostSharp和.NET的其他AOP框架,它们不是这个特定项目的选项,而且我想学习如何做到这一点。 我究竟需要做些什么才能让它发挥作用? 谢谢理查德

大型C#/ C ++解决方案的目录结构是什么?

您将如何为大型C#解决方案布局目录结构,该解决方案可能包含20到30个项目,主要是C#,但有些是C ++? 你在哪里放置外部依赖? 在源代码管理中创建分支时,您是否完全分支了所有内容? 您是否覆盖构建文件的默认值?

C#代码生成

我正在为项目创建一个小类生成器。 我一直在阅读有关CodeDOM的内容,因此创建类的语义似乎不是一个问题,但我不确定如何最好地将这一代集成到开发和部署过程中。 我该如何触发类的创建? 我已经读过它应该是构建过程的一部分,我应该怎么做? 应该在哪里创建课程? 我读到不应该手动编辑文件,也不要检查源代码控制。 我是否应该担心这一点,只是将类生成到与生成器引擎相同的目录中?

从批处理文件构建.net解决方案

我有一个解决方案文件,包含15个项目,使用一些第三方dll参考。 我希望能够从批处理文件构建解决方案。 做这个的最好方式是什么? 谢谢

使用VSTest运行unit testing用例而不是MSTest

我在TFS2010服务器上有一个x64平台C#解决方案(VS2012)。 我已将unit testing项目(也是x64)附加到此解决方案并创建了构建定义。 当我对构建进行排队时,它会成功,但不会执行unit testing用例。 这是因为MSTest是一个32位应用程序。 因此,我决定自定义默认构建过程模板(DefaultTemplate.xaml)以调用VSTest(VSTest.console.exe)而不是MSTest。 这非常复杂,我无法为VSTest的工具箱添加构建活动。 有人做过这种定制吗? 我还考虑过配置.runsettings文件等其他方法。 我们是否有可以添加到.runsettings文件中的VSTest适配器接口?

C#无法加载文件或程序集…系统找不到指定的文件

编写一个例程WinForms应用程序,它引用了我自己编写的一些自定义库。 我正在构建一个依赖于另一个库的特定库,当我这样做时,我收到以下警告消息: “无法加载文件或程序集’RHLib’版本1.0.0.0,Culture = neutral,PublicKeyToken = null’或其依赖项之一。系统找不到指定的文件” 应用程序function,没有错误消息,但我是那些喜欢完全干净的编译之一 – 没有错误,没有警告。 我无法想出这个。 有问题的库有一个对“缺失”库的引用,当VS完成编译时,“缺失”库被编译并存在于Debug目录中,构建顺序将“缺失”库放置为构建的第一个项目并且“缺失” “库没有依赖关系 – 它是一个小型库,用于使我摆脱循环assembly问题。 有任何想法吗?

使项目在多个.NET版本之间保持同步

我需要在我的应用程序中创建一些核心库,这些库将在.NET 3.5和.NET 4.0中都可用。 我很高兴创建多个项目,创建所需的定义并使用#ifdef来控制哪些代码使其成为哪个输出程序集。 但是,我想知道的是,是否有办法让这些项目保持同步? 当我在XNA下开发时,我有一个Windows构建和Windows Phone构建 – 并且XNA将一个属性注入到名为XnaCrossPlatformGroupID的项目文件中。 它的作用是使Visual Studio能够自动确保在将文件添加到项目时将其添加到相应的项目中。 因此,例如,如果我将名为Foo.cs的文件添加到项目的Windows副本中,则该相同文件将添加到项目的Windows Phone副本中。 有没有办法在Visual Studio中为一组正常的项目复制那种行为? 我不想使用构建配置,因为我希望能够在一个步骤中编译所有目标平台,而无需借助IDE之外的工具(例如TeamCity之类的东西)。 或者是否有另一种方法允许针对多个目标构建项目,而无需使用20种不同的构建配置来解决问题?