是否有可能从另一个项目运行带有dll参数的项目?
我的项目结构和依赖关系如下所示
如您所见,mod和游戏实现之间没有直接依赖关系。
当我点击Debug -> Start New Instance
,F5
或使用按钮()我想运行./ExampleGameInEngineA.exe GameModC.dll
。
但是我正在寻找一种更通用的方法,该方法可以自动进行编译ExampleGameInEngineA
并将其放置在与相同的目录中GameModC
。硬编码的目录路径也不是很好(我可以为此使用相对路径)。
出于测试目的,我们可以放心地忽略它,GameInEngineB
但我仍然不希望对进行任何硬引用GameInEngineA
。
好的,我通过使用PreBuild-Event-Target自己解决了这个问题:
GameModC.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<RunPostBuildEvent>OnOutputUpdated</RunPostBuildEvent>
</PropertyGroup>
<Target Name="PreBuild" BeforeTargets="PreBuildEvent" Condition="">
<MSBuild Projects="$(SolutionDir)ExampleGameInEngineA\ExampleGameInEngineA.csproj..." />
<ItemGroup>
<GameEngineAOutputFolder Include="$(SolutionDir)ExampleGameInEngineA\$(OutDir)*.*" />
</ItemGroup>
<Copy SourceFiles="@(GameEngineAOutputFolder)" DestinationFolder="$(OutDir)" SkipUnchangedFiles="false" />
</Target>
<ItemGroup>
<ProjectReference Include="..\GameApi\GameModdingApi.csproj" />
</ItemGroup>
</Project>
GameInEngineA.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\GameApi\GameModdingApi.csproj" />
</ItemGroup>
</Project>
请注意AppendTargetFrameworkToOutputPath
删除netcoreapp3.1
或netstandard2.1
。
但是解决方案仍然存在问题:
ExampleGameInEngineA
(需要手动重建)Condition
何时添加ExampleGameInEngineA
始终满足(因为我有一个条件没有好主意)我仍然愿意寻求更好的解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句