2011-02-14 96 views
9

作为我们开发生命周期的一部分,我们在项目中针对C#源代码运行了大量过程。将自定义信息添加到CSPROJ文件

的过程赶走,目前读取* .csproj的文件,找到项目中使用的源文件的GUI。这工作正常。

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

我们真的不希望引入一个新的配置。文件只是为了这些设置,如果我们可以帮助它。是否有可能存储这样的信息是* .csproj文件,如果没有其他地方可以放置它。

感谢

+0

请不要使用特定的设置,如凭据的.csproj文件 - 凭据使用web.config文件(或app.config)中,作为凭证可能随时间而改变。 – 2011-02-14 13:25:16

+1

@moontear,除非作为OP暗示,证书不是用于代码,而是用于通过项目“搜索”的过程。在这种情况下,凭证是项目的一个方面,而不是项目中代码的*执行*。 =) – Rob 2011-02-14 13:28:18

+0

Rob - 你是正确的,这个过程是开发过程的一部分,因此这些证书是“源”的一部分,它们在执行时与应用程序无关。 – 2011-02-14 14:23:46

回答

10

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

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

当项目被修改,这应该被持久化(即文件添加/删除),你可以从文件中检索值,使用的方法你选择。

1

我知道你解雇,但最明显的,而且很可能推荐的地方是在配置文件。虽然加密。每个项目

一个配置文件确实为大多数情况下,是不是一个大的开销恕我直言。

2

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覆盖。

相关问题