小编rdv*_*ren的帖子

c#7元组不起作用(roslyn编译器异常)

有一段时间我们在剃刀文件中使用了一些新的c#7.0功能.我们已将Roslyn编译器集成到我们的Web项目中,这些项目目前正在针对.NET Framework 4.6.2.

今天我想在剃刀文件中试用元组,如下所示:

@functions
{
    public (string labelName, string sfName) GetNames(PurchaseType purchaseType)
    {
        switch (purchaseType)
        {
            case PurchaseType.New:
                return (labelName: Booklist.New, sfName: SpecflowIdentifiers.BooklistItem.CheckBoxNew);
            case PurchaseType.Rental:
                return (labelName: Booklist.Rent, sfName: SpecflowIdentifiers.BooklistItem.CheckBoxRental);
            case PurchaseType.SecondHand:
                return (labelName: Booklist.Secondhand, sfName: SpecflowIdentifiers.BooklistItem.CheckBoxSecondHand);
            default:
                throw new ArgumentOutOfRangeException(nameof(purchaseType), @"should not get here");
        }
    }
}

@helper RenderCheckbox(PurchaseType purchaseType, int index, decimal priceTo)
{
    var names = GetNames(purchaseType);
    var x = name.labelName;
    // render something
}
Run Code Online (Sandbox Code Playgroud)

这会产生以下运行时异常:

CS8137:无法定义使用元组的类或成员,因为无法找到编译器所需类型"System.Runtime.CompilerServices.TupleElementNamesAttribute".你错过了参考吗?

CS8179:未定义或导入预定义类型'System.ValueTuple`2'

这导致我/sf/answers/2857874561/提到我应该将System.ValueTuple包添加到项目中.但我已经添加了这个.

这些是配置中使用的包:

<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" …
Run Code Online (Sandbox Code Playgroud)

c# tuples razor roslyn c#-7.0

6
推荐指数
1
解决办法
958
查看次数

MsDeploy parameters.xml:如何引用参数?

目前我正在尝试创建Web部署包.所以我在我的项目的根目录中添加了一个parameters.xml,并指定了一些自定义参数.我发现我的很多参数都是一样的.所以我想做一些参数引用.寻找这个,我来了Web应用程序包的 accros 参考.在那里它说:

隐藏 - 作为安装UI的一部分,不向用户显示隐藏参数.隐藏参数必须设置defaultValue.这些参数用于设置硬编码的默认值或设置计算的默认值.在建立参数以供将来使用时,有时会使用硬编码默认值.计算值用于从其他参数构造参数的值.构造计算值时,可以通过将{} s包围的其他参数名称放在您想要值的位置来引用其他参数.有关此标记的常见用法,请参阅示例中的"连接字符串"参数.

因此,根据文档,通过在"vdeDashboardAddress"上设置属性defaultValue ="https:// {vdeHostname} /"和tags ="Hidden",可以从"vdeDashboardAddress"引用参数"vdeHostName".

这导致我为parameters.xml提供以下代码:

<parameters>
  <parameter name="vdeHostname" description="Please provide the hostname" defaultValue="www.test.com">
    <description culture="en">The hostname of the website.</description>
    <parameterEntry kind="XmlFile"
                    scope="obj\\Release\\Package\\PackageTmp\\Configuration\\hosts\.config$"
                    match="/hostConfigurationSection/hostConfigurations/add[@name='Default']/@host" />
  </parameter>
  <parameter name="vdeDashboardAddress" defaultValue="https://{vdeHostname}/" tags="Hidden">
    <description culture="en">The https address of the Dashboard.</description>
    <parameterEntry kind="XmlFile"
                    scope="obj\\Release\\Package\\PackageTmp\\Configuration\\identity\.config$"
                    match="/system.identityModel/identityConfiguration[@name='Default']/audienceUris/add/@value" />
  </parameter>
<parameters>
Run Code Online (Sandbox Code Playgroud)

但是,情况似乎并非如此.它不引用/替换defaultValue中属性的各个部分.目前正在输出:

<audienceUris>
  <add value="https://{vdeHostname}/" />
</audienceUris>
Run Code Online (Sandbox Code Playgroud)

我在这里找到的唯一提到我的问题的线程是如何让Deploy.cmd填充Parameters.xml中的替换字段

  1. 有谁知道我在这里做错了什么?
  2. 规格不正确吗?然后,如何在parameters.xml中部分替换?

先感谢您!

最好的问候,rdvanbuuren

parameters package msdeploy webdeploy

5
推荐指数
1
解决办法
1406
查看次数

标签 统计

c# ×1

c#-7.0 ×1

msdeploy ×1

package ×1

parameters ×1

razor ×1

roslyn ×1

tuples ×1

webdeploy ×1