我有一个web服务类,框架的其他部分依赖它来获取其数据,但是web服务类需要有不同的方法属性,这取决于它所处的环境。比如说..。
[SoapDocumentMethodAttribute("https://example",...)]
public string Test()
{
//doSomething
}看到那个"https://example“了吗?这种情况需要根据环境而改变。AFAIK您不能使该字符串动态运行时,它必须以这种方式编译。因此,我试图获得它,以便为这个web服务提供多个CS文件,这些文件中有不同的属性URL硬编码,并且MSBuild在预编译时交换它们。因此,我将有一个用于测试的基础"Service.cs“,用于生产环境的"Service.cs.production”,等等。
谢谢!
发布于 2008-11-17 17:06:51
你能用条件注释吗?
#if TESTING
[SoapDocumentMethodAttribute(something)]
#else
[SoapDocumentMethodAttribute(someotherthing)]
#endif对于测试配置,您将定义常量:
<DefineConstants>TESTING</DefineConstants>发布于 2008-11-17 17:13:51
结合定义常量,并使用#if指令,
您还可以编写自定义生成任务( Engine.GlobalEngine.GetLoadedProject("projpath") -> BeforeBuild ),然后将该BeforeBuild使用到Project。
现在,您可以对Project对象上的属性进行操作,无论您希望如何处理不同的环境。
考虑在配置中添加平台,如果需要的话,可以针对不同的环境添加。
这可能不是您想要的答案,但当您想要基于项目环境进行分叉构建时,需要考虑一些问题。
https://stackoverflow.com/questions/296147
复制相似问题