【问题标题】:include vc_redist 2019 c++ as requirement in .net project在 .net 项目中包含 vc_redist 2019 c++ 作为要求
【发布时间】:2023-02-02 05:17:07
【问题描述】:

我有一个应用程序,其中一个包 (cefsharp) 具有 Microsoft Visual C++ Redistributable > 2019 的要求。

不幸的是,VS 在发布依赖于框架的单个文件时不会包含此要求。

当我启动该应用程序时,如果尚未安装,它会很好地询问是否安装 .net 6。 对于 Visual C++,它不会这样做。应用程序只是不会启动,没有错误消息或错误日志。只是事件查看器中的误导性条目。

有没有办法在项目中指定该要求,如果不存在,它也会询问您是否要安装它?

【问题讨论】:

    标签: .net visual-c++ publish cefsharp


    【解决方案1】:

    您可以对运行时进行 bin 部署,它们只是一组 dll。所以理论上你应该能够将 dll 作为 Content 包含在你的 exe 中。

    下面是用记事本写的,应该能给你一个大概的概念。将仅在 VS 下运行,因为 $(DevEnvDir) 未从命令行定义(此处从内存中获取)。将以下内容添加到您的项目文件中。

    <Import Project="$(DevEnvDir)....VCAuxiliaryBuildMicrosoft.VCToolsVersion.default.props"/>
    
    <PropertyGroup> 
        <_VCRedistLocation>$(DevEnvDir)....VCRedistMSVC$(VCToolsRedistVersion)$(PlatformTarget)Microsoft.VC142.CRT</_VCRedistLocation>
    </PropertyGroup>
    <ItemGroup>
        <Content Include="$(_VCRedistLocation)***">
          <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
          <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
          <PublishState>Included</PublishState>
          <Visible>false</Visible>
          <IncludeInVsix>true</IncludeInVsix>
        </Content>
    </ItemGroup>
    

    【讨论】:

    • 如果您遇到问题,请尝试对 dll 的路径进行硬编码,然后从那里进行优化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 2012-02-27
    • 2021-12-19
    相关资源
    最近更新 更多