如何在.csproj文件中设置带枚举参数的AssemblyAttribute?
在.csproj中配置带枚举参数的AssemblyAttribute的正确方式
你遇到的CS1503错误,是因为MSBuild会把你传入的枚举名称字符串当作普通字符串处理,无法自动转换为对应的枚举类型。解决这个问题有两种可靠的方式:
方式一:直接传入枚举的整数值
找到TestDataSourceDiscoveryOption.DuringExecution对应的枚举数值,直接将其作为参数值传入。比如该枚举中DuringExecution对应的数值是1,配置如下:
<AssemblyAttribute Include="Microsoft.VisualStudio.TestTools.UnitTesting.TestDataSourceDiscoveryAttribute"> <_Parameter1>1</_Parameter1> </AssemblyAttribute>
如果不确定枚举的具体数值,可以在C#代码中执行Console.WriteLine((int)TestDataSourceDiscoveryOption.DuringExecution)来获取。
方式二:使用MSBuild的枚举解析语法
通过MSBuild的类型转换语法,直接解析枚举类型的值,避免硬编码数值:
<AssemblyAttribute Include="Microsoft.VisualStudio.TestTools.UnitTesting.TestDataSourceDiscoveryAttribute"> <_Parameter1>$([Microsoft.VisualStudio.TestTools.UnitTesting.TestDataSourceDiscoveryOption]::DuringExecution)</_Parameter1> </AssemblyAttribute>
这种方式会让MSBuild直接引用枚举的成员,生成正确的代码,不需要手动查数值,但需要确保项目能正确引用到包含该枚举的程序集。
两种方式都能解决类型转换错误的问题,其中硬编码数值的方式兼容性更强,不会因为程序集引用问题导致解析失败;而使用MSBuild语法的方式更直观,可读性更高。
内容的提问来源于stack exchange,提问作者Ildrial
相关产品推荐
相关产品推荐

