9

作为我们开发生命周期的一部分,我们在项目中针对 C# 源代码运行了许多流程。

这些过程是从当前读取 *.csproj 文件以查找项目中使用的源文件的 GUI 驱动的。这工作正常。

我们现在有一个新要求,即提供一些需要调用 Web 服务的验证过程。需要为 Web 服务提供一些特定于项目的凭据。理想情况下,我们可以在 *.csproj 文件中输入和存储这些凭据,但我看不到扩展它的方法 - 有吗?

我们真的不想引入新的配置。如果我们可以提供帮助,请仅针对这些设置进行归档。是否可以将这样的信息存储为 *.csproj 文件,如果没有,是否还有其他地方可以放置它。

谢谢

4

3 回答 3

13

.csproj文件基本上是一个MSBuild 文件,因此您可以使用自定义值对其进行扩展。如果您在 Visual Studio 中右键单击一个项目并选择“卸载项目”,该项目将“变灰”,然后您可以再次右键单击并选择Edit [ProjectFileName].csproj. 然后,您可以添加类似于以下内容的内容:

<PropertyGroup Label="Custom">
  <Badger>1</Badger>
</PropertyGroup>

当项目被修改(即添加/删除文件)时,这应该保持不变,并且您可以使用您选择的方法从文件中检索值。

于 2011-02-14T13:23:26.637 回答
3

VS 项目支持“项目扩展”。这些是直接存储在 csproj/vbproj 文件中的自定义数据。即使从 VS 中,您也可以非常轻松地读取和写入它们。例如,下面的 VS 宏写了这样的自定义设置:

Dim proj As Project = DirectCast(DTE.ActiveSolutionProjects(0), Project)
proj.Globals.VariableValue("MySettingName1") = "My value1"
proj.Globals.VariablePersists("MySettingName1") = True

以下将其读回:

proj.Globals.VariableValue("MySettingName1").ToString

csproj 文件中的代码如下所示:

  <ProjectExtensions>
    <VisualStudio>
      <UserProperties MySettingName1="My value1" />
    </VisualStudio>
  </ProjectExtensions>

当然,这是持久化的,不会被VS覆盖。

于 2011-04-13T11:13:51.140 回答
1

我知道您忽略它,但最明显且可能推荐的位置是在配置文件中。虽然是加密的。

在大多数情况下,每个项目都有一个配置文件,并且不是很大的开销恕我直言。

于 2011-02-14T13:11:51.057 回答