通过HearthDb生成带PlayReq的CardDefs.xml

HearthDb项目从另外一个项目导入了初始的xml文件

https://github.com/HearthSim/HearthDb/blob/master/HearthDb/HearthDb.csproj

 <PropertyGroup>
    <PreBuildEvent>if exist $(ProjectDir)hsdata (
  git -C "$(ProjectDir)hsdata" fetch
  git -C "$(ProjectDir)hsdata" reset --hard origin/master
) else (
  git clone --depth=1 https://github.com/HearthSim/hsdata.git "$(ProjectDir)hsdata"
)
if "$(ConfigurationName)" == "Release" (
  powershell -ExecutionPolicy Unrestricted -file "$(ProjectDir)verify.ps1" "$(ProjectDir)"
)
xcopy /Y "$(ProjectDir)hsdataCardDefs.xml" "$(ProjectDir)CardDefs.xml*"</PreBuildEvent>
  </PropertyGroup>

加载卡牌文件的代码

https://github.com/HearthSim/HearthDb/blob/master/HearthDb/Cards.cs#L23

var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("HearthDb.CardDefs.xml");
            if(stream == null)
                return;

 需要注意的是xml文件,是以embedded resource嵌入项目的

<ItemGroup>
<EmbeddedResource Include="CardDefs.xml" />
</ItemGroup>

Visual Studio: How to store an image resource as an Embedded Resource?

Note: This answer is not the recommended way of handling image resources. It just addresses the particular problem as described by the question (i.e. to include an image as an embedded resourse).

Don't add the image as a resource. I would rather do the following:

  • Create the image/icon and save it to a file
  • Choose Project -> Add Existing Item and add the file
  • Set the Build Action to Embedded Resource

You can then access this resource using

Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceUri)

This way the image is not magically added to the projects resource file and you will only have one copy of the image stored in the assembly's resources.

从版本16.0.0.37060开始,就不附带playreq了

https://github.com/HearthSim/HearthDb/issues/18

patch 15.6.2.36393 still has the PlayRequirement section, when it comes to patch 16.0.0.37060, the section lost.

原文地址:https://www.cnblogs.com/chucklu/p/12641569.html