Nig*_*ker 12 .net c# visual-studio
我有一个resx文件,我想从几个解决方案\项目中使用它,我不想在每个解决方案中都有本地副本(仅在编译时带来一个副本).
有办法吗?因为当我将其添加为"添加现有文件"时,它会在本地复制一份副本.
知道怎么做吗?
Dr.*_*ice 15
如果您使用的是.resx文件,则可能希望利用Visual Studio为.resx文件提供的自动生成的代码功能.如果您在多个项目中包含.resx文件,那么您可能希望让每个项目自动生成自己的代码.您可能这样做是因为您想为某些项目使用不同的代码生成器(ResXCodeFileGenerator与GlobalResourceProxyGenerator),或者您可能只希望生成的代码的命名空间与项目一致.以下是如何进行设置的方法.
我已经使用名为SharedResx的C#控制台应用程序项目设置了一个新的解决方案.我还在名为Resources的解决方案中添加了一个C#类库项目,在该项目中我添加了一个名为MySharedResource.resx的新资源文件.Visual Studio使用Resources命名空间内的代码在我的Resources项目中自动创建MySharedResource.Designer.cs文件.
首先,将您现有的.resx文件作为链接包含在SharedResx控制台应用程序项目中,正如其他答案所述.添加现有项目 - >查找..\Resources\MySharedResource.resx - >使用添加按钮上的下拉列表选择"添加为链接".
接下来,您必须手动修改项目文件以设置自动生成.您可以查看Resources.csproj以查看如何在其中设置自动生成,以指导它在SharedResx.csproj中的外观.右键单击SharedResx项目,然后选择"卸载项目".再次右键单击并选择Edit SharedResx.csproj.向下滚动以查找与链接的.resx文件对应的EmbeddedResource元素:
<EmbeddedResource Include="..\Resources\MySharedResource.resx">
<Link>MySharedResource.resx</Link>
</EmbeddedResource>
Run Code Online (Sandbox Code Playgroud)
修改它以包含Generator元素和LastGenOutput元素:
<EmbeddedResource Include="..\Resources\MySharedResource.resx">
<Link>MySharedResource.resx</Link>
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>SharedResx.MySharedResource.Designer.cs</LastGenOutput>
</EmbeddedResource>
Run Code Online (Sandbox Code Playgroud)
注意:只有在您想要控制生成文件的名称时才需要手动编辑,就像我在我的示例中所做的那样.否则,您可以使用Visual Studio的"属性"窗口中的"自定义工具"设置指定Generator元素.
另请注意,在LastGenOutput元素中,我将生成的文件命名为SharedResx项目名称作为前缀.这将导致ResXFileCodeGenerator在与.resx文件相同的文件夹中创建名为SharedResx.MySharedResource.Designer.cs的文件.我已尝试在LastGenOutput元素中指定相对路径而不仅仅是文件名,以便将生成的文件放在不同的文件夹中,例如SharedResx文件夹,但我发现它不能始终如一地工作.虽然我第一次能够在正确的位置生成文件,但LastGenOutput元素会丢失其值,以便后续代不会定位到同一位置.我放弃了它,只是使用项目名称前缀作为文件名的一部分,以避免可能与其他项目冲突.
现在,关闭SharedResx.csproj文件并再次右键单击以选择"重新加载项目".右键单击SharedResx项目中链接的MySharedResource.resx文件,然后选择"运行自定义工具".您现在应该看到名为SharedResx.MySharedResource.Designer.cs的新链接文件作为MySharedResource.resx文件下的嵌套文件添加到项目中.您可能必须打开"解决方案资源管理器"窗口中的"显示所有文件"选项才能查看它.
您现在可以从项目中包含的共享.resx文件自动生成代码文件.
归档时间: |
|
查看次数: |
7043 次 |
最近记录: |