问题标签 [csproj]

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 回答
869 浏览

visual-studio-2010 - MS Build 是否可以包含所有库项目代码文件而不单独指定它们,并且可以与 Visual Studio 很好地配合使用?

有没有办法通过类库项目的常规 .csproj 文件指示 MS Build 包含所有代码文件(即项目树中的所有 .cs 文件,包括子文件夹)而不单独列出它们?

我能找到的最接近的解决方案是Using Wildcards to Specify Items

这是 Visual Studio 如何在我的类库项目中逐个文件构建指令的示例:

一种不同类型的项目,网站项目,使用一种机制来检测文件修改并重新编译这些文件。编译所有相关内容的概念是我在类库项目中所追求的,但不需要检测更改。

相关的 Visual Studio“问题”:
我意识到我的理想解决方案不太可能被 Visual Studio 遵循——它一次构建一个文件的构建文件——所以我最终会手动编辑构建文件。有没有办法让 Visual Studio 与我的理想解决方案完美配合?

0 投票
1 回答
1590 浏览

c# - Conditional AssemblyName causes C# project to always rebuild when using names other than "Debug"/"Release"

So I'm adding a "d" extension to my assembly name when building in debug mode. As far as I can tell the standard way to do this in C# is to edit the .csproj file and put in the following:

That has the desired effect, but now the darn project always rebuilds the output .dll, causing other projects that depend on it to relink, etc.. Without this change, I don't have any such problem.

So far increasing the verbosity of the project output hasn't helped.

Edit: An additional, important detail is that we're using names like "V90 Release", "V90 Debug", "V100 Release" etc.. for our configurations, so that we can target different versions of the Visual Studio runtime. I wrote a test app with the standard configuration names and found my problem doesn't happen in that case.

0 投票
1 回答
2996 浏览

python - 使用 python 解析 VisualStudio .csproj 文件的最佳方法

使用 python解析 Visual Studio.csproj文件以进行进一步修改的最佳方法是什么?

这是一些.csproj文件:

我想插入这个:

进入<Reference/>节点。

0 投票
2 回答
1779 浏览

visual-studio-2010 - msbuild 包括/从子目录复制到根目录 - 可能吗?

我可以包含来自子目录的文件,但是否将它放在 bulid 的根目录而不是其原始子目录中?

示例:我们有多个 robots.txt 文件用于不同的发布配置。这些文件在解决方案中为 \IncludeTest\Development\robots.txt 和 \IncludeTest\Production\robots.txt

我可以使用以下方法适当地动态抓取它们:

但是当我这样做时,我会维护 \IncludeTest\Development\(或 \IncludeTest\Production)目录。有什么方法可以将它包含在根目录中,robots.txt 应该在哪里?

0 投票
1 回答
2503 浏览

visual-studio-2010 - 使用 TFS2010 在 Visual Studio 2010 中编辑项目文件

我从我们的 TFS2010 系统中签出了一个解决方案,并希望以本机文本格式(而不是通过 Project->Properties)编辑 .csproj 文件本身。在我们介绍 TFS2010 之前,我只是在一个简单的文本编辑器中编辑了 .csproj 文件。如何编辑有关 TFS2010 CheckIn/CheckOut 机制的项目文件?

非常感谢,康拉德

0 投票
2 回答
110 浏览

msbuild - 将多个引用分组到一个标记元素中

我们正在使用一些第三方库,这些库有一些必须从项目中引用的依赖项。

所以每个“csproj”文件都会有一堆“ Reference ”元素,它们总是相同的。

有没有办法将这组元素分组到一个标准元素中,可以在所有 csproj 文件中使用?

例如:

“ABunchOfReferences”将是一种全局定义并包含在所有 csprojs 中的宏,使用时将扩展为 3 个“ Reference ”元素。

提前感谢您的任何想法。

0 投票
2 回答
2781 浏览

.net - csproj 文件中的 AppDesignerFolder 用于什么?

我对 AppDesignerFolder 元素在 csproj 文件中的用途感到困惑。

MSDN上似乎几乎没有文档,而且我发现的最有见地的答案也不是很令人满意。

所以我的问题是,这个属性到底控制什么......?

0 投票
1 回答
570 浏览

msbuild - 将 msbuild 文件导入另一个 msbuild 文件时的工作目录问题

我正在尝试通过扩展现有的 msbuild 文件(Web 应用程序 .csproj 文件)为 msbuild 文件指定一些额外的目标/任务。这个想法是将配置特定的任务放在这个“扩展的 ms 构建文件”中,并在我们的构建服务器(TeamCity)中使用这个文件。我最初尝试解决的方法是在我的 Web 项目中添加一个文件夹“msbuildscripts”,并将扩展的 ms 构建文件放在那里:

然后使用类似的东西构建这个文件:

现在,这将不起作用,因为在导入原始 ms 构建文件时,该 csproj 文件将在“错误”文件夹(msbuildscripts)中“执行”,并且 csproj-build-file 不会找到任何它引用的文件夹/项目。

有没有办法告诉 msbuild.exe 使用特定的工作目录?我知道可以使用执行任务来解决这个问题,但这似乎不是一个好的解决方案。

0 投票
1 回答
2278 浏览

visual-studio - 在构建 csproj 文件之前自动修复 ProjectReference 包含路径

我有一个 VS 2010 解决方案,其中包含许多项目。项目引用解决方案中的其他项目。我注意到,当我在这样的 csproj 文件中有错误的项目引用路径时:

Visual Studio 将在打开解决方案时解决此问题:

我想它使用来自 Project 元素的 GUID 来唯一标识解决方案中的项目,从而允许它修复路径。

另一方面,MSBuild 似乎无法修复此路径并且构建解决方案失败。

有没有办法让 MSBuild 修复路径,或者使用其他工具或命令将其作为预构建步骤来执行,以便正确构建解决方案?

谢谢!

0 投票
1 回答
179 浏览

.net - 在 VS2008 中从 csproj 调用 C++ LINK

我有兴趣将单个 .cpp 文件(包含本机代码和托管代码)合并到一个更大的 C# 项目中。我不想为 CPP 代码使用单独的 DLL,因为仅仅为几行代码“浪费”整个 DLL 似乎很愚蠢,而且因为代码具有一些我更愿意混淆的安全功能将其隐藏在更大的程序集中。(在有人建议之前,我不能使用 ILmerge 或 AL,因为它们不适用于本机代码。)

编译 .cpp 和一组 .cs 文件的基本过程已经介绍过几次;主要候选人的建议似乎是:

然而,这两个(以及我能找到的所有相关链接)都只处理在命令行上构建。

我更愿意更改我现有的 .csproj 文件以在 C++ 代码中编译和链接(我不介意 C++ 构建本身位于单独的 .vcproj 中,虽然如果不是更好,但链接必须在 .csproj 中),并使其都可以在 VS2008 中构建,这样项目的用户就不需要知道其中的区别。

不幸的是,我似乎无法从 VS 编译的 .csproj 中成功调用 link.exe。带有“link”的“Exec”元素找不到可执行文件,因为它不在 PATH 中。显式指定位置 ("$(DevEnvDir)....\VC\bin\link") 确实开始运行它,但它立即失败并显示错误代码,表明它无法加载它需要的库(大概是因为再次,它不在PATH中)。

是否有任何从 Visual Studio 中的 csproj 成功调用 LINK 的示例?


编辑:好的,我现在已经设法解决了这个问题,一切都在编译、链接和运行良好——在发布模式下。它似乎在调试模式下仍然可以正常运行,但由于某种原因,它的 SxS 清单(LINK生成但我必须通过手动应用mt)仅指发布 CRT,而不是 DebugCRT。任何想法如何解决这个问题?