VisualStudio2019如何编译程序为单文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VisualStudio2019如何编译程序为单文件?相关的知识,希望对你有一定的参考价值。

如题,在VS中编了一个小程序,编译后发现程序必须依赖一个dll文件,而且很多电脑无法运行。求解如何将其编译成单文件(就是只需要一个exe就能直接运行的),大小变大没关系。
网上很多方法都试过了,但是VS2019没有解决方案,而且打包插件下载不下来。
若问题解决,再追加50甚至以上财富值。

你是用C#写的么,如果是的话目前做不到,运行时需要.net运行库支持,只需要一个exe就能用的,需要将代码编译为本地机器码才行(只有.net native才提供的本地编译,但那个是用在应用商店里的),另外,虽然有Salamander .NET Linker 这类第三方软件,但是问题很多。
如果你一定要这个需求的话并且项目不大的话,只能建议重写,常用的本地编译环境比如vb(注意是vb6,不是vs里的vb.net)、delphi和vc++,要简单的话用vb6好了。追问

所以有什么推荐的打包软件吗?就是能把dll和EXE打包在一个EXE里面?

自己解决了,程序用Enigma Visual Box打包工具封装就行了,编译选x86,这40财富值送你了

参考技术A 点击生成-发布,然后修改配置文件设置,点开文件发布选项,勾上"生成单个文件"。

如何使用 Firebase 为单页应用程序实现 sitemap.xml 文件?

【中文标题】如何使用 Firebase 为单页应用程序实现 sitemap.xml 文件?【英文标题】:How to implement a sitemap.xml file for a single page app using Firebase? 【发布时间】:2020-01-12 04:04:57 【问题描述】:

我在阅读谷歌关于 SEO 的指南时发现了这一点。

帮助 Google 找到您的内容

让您的网站出现在 Google 上的第一步是确保 Google 可以找到它。最好的方法是提交站点地图。站点地图是您网站上的一个文件,它告诉搜索引擎您网站上的新页面或更改页面。详细了解如何构建和提交站点地图。

Obs.:我的网络应用是一个电子商务/博客,我在其中有一个商店,我有产品要出售,我有一个博客部分,我可以在其中创建和发布有关这些产品的内容。

因此,每个产品都有一个产品页面,每个博客文章都有一个blogPost页面

然后我从像我这样具有良好 SEO 排名的网站中寻找一些 站点地图 示例。

我发现了这个很好的例子:

robots.txt

User-Agent: *
Disallow: ... // SOME ROUTES

Sitemap: https://www.website.com/sitemap.xml

IE:显然爬虫机器人从 robots.txt 文件中找到了站点地图位置。

我还发现他们为 blogPost 和产品页面保留了单独的站点地图文件。

sitemap.xml

<sitemapindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd">
  <sitemap>
    <loc>https://www.website.com/blogPosts-sitemap.xml</loc> // FOR POSTS
    <lastmod>2019-09-10T05:00:14+00:00</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://www.website.com/products-sitemap.xml</loc>  // FOR PRODUCTS
    <lastmod>2019-09-10T05:00:14+00:00</lastmod>
  </sitemap>
</sitemapindex>

blogPosts-sitemap.xml

// HUGE LIST WITH AN <url> FOR EACH BLOGPOST URL

<url>
  <loc>
    https://www.website.com/blog/some-blog-post-slug
  </loc>
  <lastmod>2019-09-03T18:11:56.873+00:00</lastmod>
  <changefreq>weekly</changefreq>
  <priority>0.8</priority>
</url>

products-sitemap.xml

// HUGE LIST WITH AN <url> FOR EACH PRODUCT URL

<url>
  <loc>
    https://www.website.com/gp/some-product-slug
  </loc>
  <lastmod>2019-09-08T07:00:16+00:00</lastmod>
  <changefreq>yearly</changefreq>
  <priority>0.3</priority>
</url>

问题

如果我的网络应用是带有客户端站点路由的单页应用,我如何保持Sitemap 文件的更新?

因为我使用 Firebase 作为我的主机,所以我想做的是:

选项 #1 - 将 sitemap.xml 保留在 Firebase 托管中

来自这个问题Upload single file to firebase hosting via CLI or other without deleting existing ones?

Frank van Puffelen 说:

更新(2018 年 12 月):Firebase 托管现在具有 REST API。虽然这仍然不允许您部署单个文件,但您可以创造性地使用它来获得您想要的东西。在这里查看我的要点:https://gist.github.com/puf/e00c34dd82b35c56e91adbc3a9b1c412

我可以使用他的 Gist 更新 sitemap.xml 文件并每天运行一次此脚本,或者在我想要的任何时候运行。这适用于我当前的项目,但不适用于动态页面更改频率较高的项目,例如新闻门户或市场。

选项 #2 - 将 sitemap.xml 保存在 Firebase 存储中

将站点地图文件保存在我的存储桶中,并根据需要通过管理脚本或云计划函数频繁更新。

在我的firebase.json 中设置重写,并指定一个函数来响应并在请求时从存储桶中提供站点地图文件。

firebase.json

"hosting": 
 // ...

 // Add the "rewrites" attribute within "hosting"
 "rewrites": [ 
   "source": "/sitemap.xml",
   "function": "serveSitemapFromStorageBucket"
  ]

最后的问题

我倾向于选项 #2,我想知道它是否适用于这个特定目的,或者我是否遗漏了什么。

【问题讨论】:

您好,我也遇到了和您一样的问题,想知道您的解决方案是否适用于 google 搜索控制台? @JimmyLin 我有一个云函数可以即时生成sitemap.xml。例如:https://www.mywebsite.com/sitemap.xml 将被重定向到 http 云函数,该函数将构建文件并做出响应。这样,站点地图“文件”就不存在了。它是按需生成的,并且始终使用最新数据进行更新。 @JimmyLin 我已经发布了答案。 当如此简单的事情最终变得如此复杂时,我们走错了方向。 【参考方案1】:

我最终创建了一个云函数来按需构建站点地图文件。

firebase.json

"rewrites": [
  
    "source": "/sitemap.xml",
    "function": "buildSitemap"
  ,
]

buildSitemap.js(这是一个云功能)

import * as admin from 'firebase-admin';

async function buildSitemap(req,res)  

  // Use firebase-admin to gather necessary data
  // Build the sitemap file string
  // and send it back

  res.set('Content-Type', 'text/xml');
  res.status(200).send(SITEMAP_STRING);
  return;



export default buildSitemap;

【讨论】:

你还在用这个方法吗?但是,因为我有类似的方法,所以我觉得这样做有一些缺点。每个站点地图最多只能存储 50.000 个网址,可能会进行大量不必要的读取(我从 Firestore 获取所有帖子 ID),最后,每次从头开始创建站点地图都需要几秒钟。 我还在用它。到目前为止,它工作正常。不过,我得到了大约 100 个网址。我知道您可以创建一个站点地图索引并将其分解为多个站点地图文件,因此每个文件都有 50k。也可以缓存一天,避免读取过多。 感谢您的快速回复。是的,我目前正在尝试使用站点地图索引方法并将网址拆分为多个文件。如果我能够实现它,我可以让你知道。最后一件事,您是否有关于如何将站点地图结果缓存一天的参考或 sn-p? @LukyFoggy 这取决于您的实现细节。如果您的托管服务提供商有 CDN,您可以通过设置 Cache-Control: s-maxage=SOME_VALUE_IN_SECONDS 标头将其缓存在 CDN 上。或者,如果您不在 CDN 后面,则可以直接在您的服务器上缓存。 就是这样。您可以在firebase.json 配置文件中设置它,也可以在您的服务器/云功能上设置它。请注意firebase.json 将覆盖您在服务器上设置的内容。见this question。至少,这些是我测试此行为后得到的结果。

以上是关于VisualStudio2019如何编译程序为单文件?的主要内容,如果未能解决你的问题,请参考以下文章

visualstudio2019如何运行c语言

如何在 QDoubleSpinBox 中为单步设置多个值

如何使用 Firebase 为单页应用程序实现 sitemap.xml 文件?

Python将立体声.flac转换为单声道

visual studio2019怎么运行c语言程序

在Javascript中将立体声音频转换为单声道