我可以使用没有.net标准的较新的System。*程序集吗?

时间:2017-12-07 23:05:32

标签: .net .net-core .net-standard

我们已将其中一个Web项目升级到ASP.NET Core 2.0,并且由于程序集版本不匹配而导致其他项目出现错误。我正在尝试将所有冲突的程序集升级到最高版本。

例如, System.Collections.Immutable nuget包的先前版本为1.3.1,但ASP.NET Core 2项目引用的版本为1.4.0版。所以我尝试在.csproj文件中更改它,其中引用了 System.Collections.Immutable

<?php

get_header();

$is_page_builder_used = et_pb_is_pagebuilder_used( get_the_ID() );
?>
<?php if ( ! (function_exists('is_cart') && is_cart()) || ( ! function_exists('is_account_page') && is_account_page()) || ( ! function_exists('is_checkout') && is_checkout() ) ) : ?>
 <?php echo do_shortcode('[et_pb_section global_module="218"][/et_pb_section]'); ?>
 <?php endif; ?>

    <div id="main-content">


<?php if ( ! $is_page_builder_used ) : ?>

    <div class="container">
        <div id="content-area" class="clearfix">
            <div id="left-area">

<?php endif; ?>

            <?php while ( have_posts() ) : the_post(); ?>

                <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

                <?php if ( ! $is_page_builder_used ) : ?>

                    <h1 class="entry-title main_title"><?php the_title(); ?></h1>
                <?php
                    $thumb = '';

                    $width = (int) apply_filters( 'et_pb_index_blog_image_width', 1080 );

                    $height = (int) apply_filters( 'et_pb_index_blog_image_height', 675 );
                    $classtext = 'et_featured_image';
                    $titletext = get_the_title();
                    $thumbnail = get_thumbnail( $width, $height, $classtext, $titletext, $titletext, false, 'Blogimage' );
                    $thumb = $thumbnail["thumb"];

                    if ( 'on' === et_get_option( 'divi_page_thumbnails', 'false' ) && '' !== $thumb )
                        print_thumbnail( $thumb, $thumbnail["use_timthumb"], $titletext, $width, $height );
                ?>

                <?php endif; ?>

                    <div class="entry-content">
                    <?php
                        the_content();

                        if ( ! $is_page_builder_used )
                            wp_link_pages( array( 'before' => '<div class="page-links">' . esc_html__( 'Pages:', 'Divi' ), 'after' => '</div>' ) );
                    ?>
                    </div> <!-- .entry-content -->

                <?php
                    if ( ! $is_page_builder_used && comments_open() && 'on' === et_get_option( 'divi_show_pagescomments', 'false' ) ) comments_template( '', true );
                ?>

                </article> <!-- .et_pb_post -->

            <?php endwhile; ?>

<?php if ( ! $is_page_builder_used ) : ?>

            </div> <!-- #left-area -->

            <?php get_sidebar(); ?>
        </div> <!-- #content-area -->
    </div> <!-- .container -->

<?php endif; ?>
<?php if ( ! (function_exists('is_cart') && is_cart()) || ( ! function_exists('is_account_page') && is_account_page()) || ( ! function_exists('is_checkout') && is_checkout() ) ) : ?>
 <?php echo do_shortcode('[et_pb_section global_module="247"][/et_pb_section]'); ?>
 <?php endif; ?>
</div> <!-- #main-content -->

<?php get_footer(); ?>

但是,这会导致编译错误:

  

此项目使用的Microsoft.NET.Sdk版本不足以支持对面向.NET Standard 1.5或更高版本的库的引用。请安装.NET Core SDK 2.0或更高版本。

首先,我确实安装了.NET Core 2.0 SDK。谷歌搜索周围有一些建议,我将&lt; DependsOnNETStandard&gt; 属性添加到csproj文件并引用NETStandard.Library。但是,我无法做到这一点,因为我们的代码充分利用了.NET Framework,包括不在 netstandard 中的内容。

我怎样才能让它发挥作用?

仅供参考,我们使用的是Visual Studio 15.3.3和.NET 4.6.2。

1 个答案:

答案 0 :(得分:0)

将DependsOnNETStandard添加到csproj文件中,并且对.NETStandard.Library的引用不会破坏与完整框架的兼容性。我目前正在开发一个完全符合这一要求的项目 - 针对.NET Framework 4.6.1的ASP.NET Core 2.0 Web应用程序,引用.NET Standard和.NET Framework类库以及许多OOB .NET Standard软件包。