我有一个Web服务类,框架的其余部分依赖于获取其数据,但Web服务类需要具有不同的方法属性,具体取决于它所处的环境。例如......
[SoapDocumentMethodAttribute("https://example",...)]
public string Test()
{
//doSomething
}
看到“https://example”?这需要根据环境而改变。 AFAIK你不能让那个字符串为运行时动态,它必须以这种方式编译。所以我试图得到它,以便我有这个Web服务的多个CS文件,其中有不同的属性URL硬编码,并且MSBuild在预编译时交换它们。所以我有一个基础“Service.cs”用于测试,“Service.cs.production”用于生产环境,等等。
谢谢!
答案 0 :(得分:4)
你能使用条件评论吗?
#if TESTING
[SoapDocumentMethodAttribute(something)]
#else
[SoapDocumentMethodAttribute(someotherthing)]
#endif
对于测试配置,您将定义常量:
<DefineConstants>TESTING</DefineConstants>
答案 1 :(得分:3)
结合定义常量,并使用#if指令,
您还可以编写自定义构建任务 - &gt;目标BeforeBuild,然后将Engine.GlobalEngine.GetLoadedProject(“projpath”)用于Project对象。
现在,您可以根据需要操作Project对象上的属性。
如果您愿意,可以考虑在配置中添加适用于不同环境的平台。
这可能不是您正在寻找的答案,但是当您想要根据项目环境进行分支构建时需要考虑的事项。