问题标签 [project-files]

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 投票
1 回答
2310 浏览

visual-studio - 将解决方案中的所有项目 EXE 和 DLL 文件复制到一个公用文件夹的最佳方法?

我有一个包含大约 15 个项目的 C# Visual Studio 解决方案。当我构建解决方案时,我希望每个项目的所有 DLL 和 EXE 文件都转到一个公共文件夹(称为 Deploy)。

我正在考虑这样做的方式是,对于每个项目的Post-build Event Command Line部分放置以下命令:

但是,这样做的问题是我有 15 个项目,并且会将其放在每个单独项目的构建后事件部分中,而且,每次我添加一个新项目时,我都必须记住为它做同样的事情.

我检查了解决方案文件属性,但没有看到设置解决方案范围的构建后事件以复制所有文件的方法,因此我进行了一些 Google 搜索。

一页说使用 C++ Makefile项目。我将这种类型的项目添加到我的解决方案中,然后单击项目属性页面,发现在Configuration Properties->NMake下有一个部分,内容如下:

  • 构建命令行
  • 重建所有命令行
  • 干净的命令行

使用Makefile项目的命令行选项会产生与上述类似的问题。复制我的 15 个项目的每个输出文件的许多不同命令,例如:

这样做还有另一个明显的问题。如您所见,我利用了 $(SolutionDir) 和 $(ConfigurationName) 宏,但我必须对每个项目名称进行硬编码。我没有看到任何宏,如 $(AllProjects)、$(AllProjectDirs) 等。

此外,似乎Makefile的命令行命令是用于构建,而不是构建后事件,所以我完全放弃了这个想法。

然后我尝试使用Visual Studio 安装程序项目。将项目添加到我的解决方案后,我右键单击该项目并看到有一个Add->Project Output...选项。这带来了一个对话框,允许我添加我的另一个项目的主要输出之一之一。我对我的其他每个项目都重复了这一点并进行了重建。

结果是输出文件夹中的 .MSI 文件。然后我打开安装程序项目属性并将包文件选项更改为松散未压缩文件并重新构建。输出文件夹现在包含我项目的所有 EXE 和 DLL 文件!

大多数人会在这一点上感到满意并继续前进,但我是那种喜欢找到最好的做事方式的人。

我不喜欢使用安装程序项目选项的一件事,事实上,除了从我的所有项目中复制文件之外,它还创建了一个 MSI 文件(我不需要)而且我没有看到任何选项告诉它不要创建一个。

谁能推荐另一种/更好的方法来实现我将所有项目输出文件复制到单个文件夹的目标?

谢谢你。

PS 我在想我可以只制作一个批处理文件来搜索所有 EXE 和 DLL 文件并将其复制到 Deploy 文件夹,但我必须在 Visual Studio IDE 之外运行批处理文件并硬编码配置文件夹(调试或部署)。

0 投票
0 回答
1225 浏览

visual-studio-2013 - 无法在 Visual Studio 2013 中卸载项目

我有一个项目文件的解决方案,我需要将其修改为文本(即 XML)。这是通过右键单击项目并选择Unload Project,然后再次右键单击它并选择 来完成的Edit Project.csproj。但是,这不适用于所有项目。有时我会收到消息

我想知道为什么有时会出现此消息(即,我的项目/解决方案配置可能导致此问题的原因是什么)以及是否有另一种方法可以在 Visual Studio 中编辑 .csproj(如果我尝试关闭解决方案,然后打开.csproj 文件 Visual Studio 只是再次打开解决方案)。

0 投票
1 回答
333 浏览

visual-studio - VS 参考 HintPath 中的 ../../ 太多

根据下面的示例结构,我的 TFS 文件夹结构具有四层深的项目文件。我引用了位于 ThirdPartyLib 文件夹中的 Dll,该文件被自动引用为:.......\SolutionHoldingFolder\DEV_Region\ThirdPartyLib\Referenced.dll。问题是每个 DEV_Region 都映射到 TFS 中,因此每个开发人员对特定区域上方的层都有不同的文件夹名称。因此,这会破坏我们自动构建和其他所有开发人员机器上的构建。

参考应该不需要在文件结构上增加那么多。不会破坏自动化和其他所有开发人员构建的最小数量和路径是:......\ThirdPartyLib\Referenced.dll。当提升到上层分支时,这条路径是安全的。

如何在默认情况下以最小的方式获得 Visual Studio 引用文件路径,而不是破坏合并和自动构建的方式?

示例结构:SolutionHoldingFolder DEV_Region ThirdPartyLib SolutionFolder LayerFolder1 LayerFolder2 ProjectFolder ProjectFile

我正在使用VS2013。

0 投票
1 回答
371 浏览

visual-studio - 可以将构建配置存储在解决方案文件以外的文件中吗?

我使用一个包含很多项目的解决方案。我创建了一个新的构建配置来加快使用它的速度。

为了加快编译速度,我将大多数项目设置为不在我的新构建配置中构建。为了加快调试速度,我将大部分项目设置为在我的新构建配置中构建以供发布。

这很好,直到我必须签入对项目文件的更改,或者从其他人对项目文件的更改中获取最新信息。合并更改,或者不断地搁置和取消搁置它们是很痛苦的。

是否可以将我的构建配置存储在单独的文件中?欢迎提出解决方法的想法。

0 投票
1 回答
553 浏览

c++ - GitHub 将源文件开源到不同的 IDE

我对 C/C++ 比较陌生 - 我的大部分编码经验都是在 Matlab、Fortran 和偶尔的 C 中编写具有非常特定应用程序的一次性数学程序,项目复杂度低(1-5 个文件),通常由我一个人编写. 为了熟悉更复杂的 C/C++ 编码语法和更大的项目,我下载了一个 GitHub 开源项目:

https://github.com/JohnLangford/vowpal_wabbit

这个工具箱带有一个 VS13 项目文件,所以我可以很容易地将它加载到 VS13 中;但是,我一直在使用 CodeBlocks。两个问题:

1:如何在CodeBlocks等其他IDE中打开VS13项目?我可以加载每个库,然后将每个搜索目录添加到链接器,并从本质上复制环境,但必须有一种更简单的方法,因为对于非常大的项目,这可能需要很长时间。

2:许多 GitHub 工具箱没有任何 IDE 的项目文件。有人如何创建 IDE 项目文件?例如这个工具箱(https://github.com/shogun-toolbox/shogun)。

0 投票
1 回答
119 浏览

c++ - 如何在不破坏 Visual Studio 中旧编译器的情况下启用新的编译器功能?

我正在(共同)研究一个必须针对许多不同编译器和编译器版本的库。例如,我们需要支持 Visual Studio 2005 到 2015 以及其他一些(ICC、Clang、GCC,...)。

现在大多数新编译器都添加了新功能,其中一些可能非常有用。事实上,它们非常有用,我们想默认打开它们。但是我们仍然希望保持与旧编译器的兼容性。

例如:
Visual Studio 2015 引入了控制流防护,有助于防止对库的某些攻击。然而,对于早期的编译器版本,这显然是一个未知的选项。

那么我们如何设置我们的 .vc(x)proj 文件以默认启用新功能(例如控制流保护),同时在旧编译器上无警告(不知道新功能)?还是不可能?

0 投票
2 回答
796 浏览

visual-studio-2013 - Premake:如何防止元素被添加到 VS2013 项目文件中?

我将所有源文件保存在一个单独的位置,以保持我的后备箱清洁和井井有条。我只是在我的 lua 文件中指向这个“源代码”位置,但将我的“位置”设置为一个完全独立的“构建”目录。在大多数情况下,这会产生我想要的行为类型,并且似乎是一个优雅的解决方案。除了...

当我运行 premake 生成项目文件时,它会为包含的每个(编译元素)文件创建链接元素。因此,在打开解决方案文件时会创建一个无关文件夹。该文件夹不再使用。

生成的项目文件的摘录:

在 VS2013 中打开解决方案后,会创建一个“bin”和“obj”文件夹(根据需要)。但是还创建了一个额外的“SourceCode”目录(及其子目录),但从未再次使用过。是否有一个标志我可以用来简单地告诉 premake 不要在项目文件中包含链接块?

我正在使用premake5。

这是我的目录结构的设置方式:

模板解决方案文件,“solution-Template.lua”:

模板项目文件,“project-Template.lua”:

模板配置文件,'configurations-Template.lua':

然后,我将在 \trunk\premake 的命令提示符下运行以下命令:

这会导致在我的 \trunk\builds\ 目录中创建一个文件夹,并在其中为每个项目创建一个文件夹。这正是我想要的(并保持我的行李箱井井有条)。但是,在 VS2013 中打开解决方案文件时,会自动创建我的 SourceCode 目录的文件夹以及 bin 和 obj 文件夹,但它们根本不用于任何事情。据我所知,这是因为 Link 元素被添加到项目文件中。

0 投票
1 回答
135 浏览

visual-studio - CMake 生成的项目文件以列出外部源

请考虑以下结构:

Project1 和 Project2 是独立的项目。他们都使用通用代码。我想(有选择地)将一些常见的源文件列出到每个项目的 Visual Studio 项目文件中,以便我可以在 IDE 中编辑它们。
我不想要通用代码的独立库。

现在我使用相对路径,例如在 project1 的 cmake 文件中:

这不灵活——如果我想移动文件夹,所有 CMakeLists.txt 都必须经过审查和修改。有没有更优雅的方式来解耦依赖关系,或者有什么更好的方式来处理常见的源文件?

欢迎任何建议。非常感谢。

0 投票
2 回答
5070 浏览

.net - 为项目设置默认构建配置

我在 Visual Studio 项目文件中有几种可能的配置。我如何指定默认选择哪一个(当不.suo存在时)?现在,当我在 Visual Studio 中打开项目时,默认选择调试配置。

项目文件的相关部分:

我希望默认选择此配置:

0 投票
0 回答
2340 浏览

c# - 如何链接到不同位置的文件夹?

在由 Visual Studio 或 SharpDevelop 编写的 C# 项目文件中,不位于项目文件夹层次结构中的文件可以包含在<Link>元素中。1

我的目录结构如下所示:

因此,在TestProj.csproj中,我可以添加以下内容:

这完美无缺,并且somefile.txt作为资源嵌入。SharpDevelop 4.4 显示的项目树如下:

带有链接文件的项目

但是,为了使事情更整洁,我想在TestProj.csproj的文件夹层次结构中组织像somefile.txt这样的文件。我尝试了以下方法:

只是适应<Link>

声明所需名称的文件夹:

将实际文件夹声明为链接:

所有这些都产生相同的结果:项目中的文件夹结构显示为所需的,但是,File 文件夹标有黄色感叹号警告标志,暗示有些事情不太正确:

文件夹中带有链接文件的项目; 文件夹显示警告符号

我发现让这个警告符号消失的唯一方法是在项目目录中实际创建一个额外的文件夹:

从这里可以看出,这个额外的File 文件夹将保持为空,并且空目录只有在 Git 等版本控制系统的变通方法中才有可能。(可能相同的限制适用于某些存档格式。)

因此,我仍在努力寻找更好的解决方案:如何链接到项目文件夹结构之外的文件,并将它们分类到项目中的空文件夹层次结构中?

不幸的是,MSDN 上的 MSBuild Schema Reference甚至没有提到该<Folder>元素,因此我无法通过文档找到有关该问题的任何信息。

1:通常,这用于在多个项目中包含文件。在我的特殊情况下,我正在处理一个需要在同一解决方案中引用类库的项目,但它还需要包含该类库的整个源代码(包括项目文件等)作为嵌入式资源。