问题标签 [project-properties]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
43 浏览

c++ - 当只有一个项目要构建但不能用于引用第一个项目的第二个项目时,在 x64 构建时强制 x86 和 x64 构建有效

我有一个巨大的 99% 的c#Visual Studio 解决方案,其中包含许多c#项目,并且只有一个c++项目在构建时产生一个 dll(在需要的地方复制),由一个c#dll 包装和编组,然后由解决方案中的许多其他项目使用. 解决方案的配置管理器的属性是:

  • 对于任何配置(调试或发布),平台对于所有c#项目都是“任何 CPU”
  • 对于c++项目,对于任何配置,平台都是 x64

第二点有一个很好的转折:c++项目的vcproj结尾包含以下内容:

c++根据上面的第二点,每次在 x64 中构建时,都会在 x86 和 x64 中构建(对于给定的配置)。

这自然是有争议的,具有挑战性的,但是在构建服务器等的生产环境中可以完美运行多年,并且不能在没有副作用的情况下对数十人进行修改。准确地说,在 prod 中,c++ 项目产生了一个c++其他c#项目(也产生 nugt 包)引用的 nuget 包。

我在其中的角色?我在 c++ 中评论了几个问题,更正了所有问题,并希望推动我的更正。问题是c++代码仅通过测试进行c#测试,并且每次测试运行时都需要加载大量数据,或者至少加载一个大量数据和模拟,而在c++我已经拥有执行测试所需的所有序列化文件.

因此,我创建了一个c++测试项目(Visual Studio 中的 C++ 单元测试项目),在其中引用了原始c++项目,c++在需要的地方复制原始项目的 dll 以使c++测试项目顺利运行,设置测试项目(适用于任何配置)构建在 x64 中(在配置管理器中)并在其vcproj文件中添加了与原始文件相同的“AfterBuild”位c++(如上所示)。

但是,这给了我构建错误:

如果我将测试项目(对于任何配置)设置为在 x86(在配置管理器中)而不是 x64 中构建并从其vcproj.

我试图实现的是,像对初始c++项目所做的那样(通过在配置管理器中强制 x64 + 文件中的“AfterBuild”位vcproj),确保c++测试项目的构建方式与原始c++项目相同,同时引用它。我不知道这是否可能。

0 投票
1 回答
282 浏览

c# - 无法在 Rider ide 中编辑项目属性

项目属性只是不打开,并且 Rider 说“此项目不支持编辑属性”错误图像。每个项目都会发生这种情况,但在 Visual Studio 中,我可以正常编辑项目属性。如何解决?

谢谢你的帮助

0 投票
1 回答
15 浏览

visual-studio-2019 - 在 Visual Studio 项目属性/代码分析选项卡中找不到“实时分析运行”复选框

在 Visual Studio 2019 v16.11.1 中,我在项目属性/代码分析选项卡下找不到“实时分析运行”复选框,如msdn所示。我也没有在 msdn 文档中找到任何信息。请帮我解决我在这里想念的东西。截图附在下面。在此处输入图像描述

0 投票
1 回答
41 浏览

c# - .Net core 6:如何在没有程序集的情况下拥有输出目录

我正在将公司产品从 .Net 4.8 移植到 .Net core 6 中。在解决方案中,有一个输出目录,其中包含:Assemblies、Configuration、Log、Resources 目录,并且只有启动器项目的 .exe、.pdb 和 .exe.config。Dll 在 Assemblies 目录中,我绝对需要复制相同的结构。

在启动器项目 .csproj 文件中,我们设置了:

在其他方面:

在编译过程中,VS Studio Professional 2022 会继续复制 ProjectReference 包含的项目的 .dlls/.pdbs,并以递归方式越来越多地复制所有 .dlls。为了避免这种行为,我尝试了很多方法,例如使用所有这些属性(也在不同的设置组合中:无,全部,编译......)但问题仍然存在:

目前,我正在 windows 中构建,但将来也会有一些 linux 机器必须构建解决方案,所以我需要一种在所有环境中都可以工作的方法。

有可能做到吗?

加载程序集不是问题,我已经修改了 AssemblyLoadContext.Default.Resolving,如果我从输出目录中手动删除 dll,应用程序可以工作,但我需要比构建后删除脚本更“优雅”的东西(构建后事件) .