我正在编写一个游戏开发IDE,用于创建和编译.NET项目(我过去几年一直在研究),并且我正在更新它以生成输出,不仅适用于Windows/Visual Studio,还适用于对于Linux/MonoDevelop(一个非常简单的.NET进程,但仍然需要一些调整).
作为其中的一部分,我发现有必要开始生成app.config文件作为其中的一部分,以将依赖的DLL名称映射到具有<dllmap>元素的Linux依赖项名称.我很担心谁负责将app.config文件复制到输出名称app.exe.config.在Visual Studio项目中,app.config的Build Action通常设置为"None",其设置表明它不会被复制到任何地方,但是当Visual Studio编译项目时它会生成app.exe.config(虽然我有时发现这是不可靠的).当我使用MSBuild构建IDE生成的解决方案文件(用于调试目的)时,MSBuild将app.config复制到app.exe.config.但是当我使用CSharpCodeProvider.CompileAssemblyFromFile编译项目时(自然而然)并没有 像配置文件作为源代码包含("app.config(1,1):错误CS0116:命名空间不直接包含诸如字段或方法之类的成员"),当然它不会将其复制到当我不将它作为输入包括时输出.我是否有责任单独将app.config复制到app.exe.config,或者有更标准的方法吗?
是否硬连线采用第一个*.config文件?在我的IDE中,可以想象app.config文件将被重命名或添加另一个(就像在Visual Studio中一样).我觉得IDE对配置文件有这个秘密行为似乎很奇怪(我认为MonoDevelop在这方面表现相似,因为我找不到配置文件的特殊操作).我不知道它甚至会选择这个秘密行动适用的文件.
我正在尝试使用MonoTouch/MonoDevelop 在一个小型测试应用程序中运行iPhone设置.它可能是Xcode中的超级基础/基础......
... ...但是我没有立即看到如何做到在MonoTouch的例子,后一点阅读猜到是一位Settings.bundle在包含一个我的MonoDevelop解决方案的根文件夹中root.plist的XML文件应该工作.
它有点 - 我的应用程序现在出现在设置窗口 - 但实际输入没有显示.我已经尝试了一些不同的东西plist(来自谷歌和开始的iPhone开发书)但到目前为止没有运气.
有人能指出我错过了什么:要么是MonoTouch解决方案/构建过程中的一步还是错误我root.plist文件的格式/内容?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Title</key>
<string>iSOFlair</string>
<key>StringsTable</key>
<string>Root</string>
<key>PreferenceSpecifiers</key>
<array>
<dict>
<key>Type</key>
<string>PSTextFieldSpecifier</string>
<key>Title</key>
<string>User Id</string>
<key>Key</key>
<string>soUserId</string>
<key>AutocapitalizationType</key>
<string>None</string>
<key>AutocorrectionType</key>
<string>No</string>
</dict>
</array>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud) 在VS2010,VS2008或Windows上的MonoDevelop中编译以下程序时,我收到警告CS0219,"已分配变量'y',但从未使用过它的值".
namespace Problem
{
public class Program
{
private static void Main(string[] args)
{
object x = new object();
int y = 0;
}
}
}
Run Code Online (Sandbox Code Playgroud)
为什么x在Visual Studio中编译时没有警告?
有趣的是,我得到了CS0219警告x ,并 y在Mac OS X中的MonoDevelop编译时
我从HexConverter中获取了以下代码- 统一社区Wiki
string hex = color.r.ToString("X2") + color.g.ToString("X2") + color.b.ToString("X2");
Run Code Online (Sandbox Code Playgroud)
这给了我一个例外:
FormatException: The specified format 'X2' is invalid
Run Code Online (Sandbox Code Playgroud)
我尝试使用,"D"但即使这样也犯了错误.唯一有效的是"F格式化浮点数.
转到声明显示汇编浏览器中的mscorlib.dll/System/Single.ToString(字符串) - 到目前为止听起来不错.
谷歌搜索monodevelop字符串格式十六进制或类似的搜索字符串没有显示有关MonoDevelop限制的任何有趣的东西.
那么有什么准备,初始化,...之前我可以得到一个简单的十六进制值转换?
[更新] 颜色是Unity中的结构:
public struct Color
{
public float r;
public float g;
public float b;
// ...
Run Code Online (Sandbox Code Playgroud)
采取dtb的答案我终于使用它:
int r = (int)(color.r * 256);
int g = (int)(color.g * 256);
int b = (int)(color.b * 256);
string hex = string.Format ("{0:X2}{1:X2}{2:X2}", r, g, b);
Run Code Online (Sandbox Code Playgroud)
所以我错过了Color …
我需要HttpUtility来编码字符串,但它似乎得到了支持,但不再支持.实际上,整个System.Web都没了.
还有其他选择吗?我需要Javascript Escape一些字符串.
有没有办法将Visual Studio项目传输到MonoDevelop环境?在常见问题- MonoDevelop中有人说:
MonoDevelop可以直接在mopst情况下打开,操作和保存基于MSBuild的项目.事实上,由于MonoDevelop 2.0的默认项目格式已经是VS2008风格的MSBuild项目,但VS2005和VS1010格式也在处理中.
但是当我尝试在MonoDevelop中打开我的(ASP.NET Web应用程序).vbproj时,我得到:
加载操作失败.Project不支持框架'.NETFramework,Version = v4.0'.
我应该改变项目设置,允许不同的.NETFramework版本,还是必须使用一些第三方软件来翻译我的项目配置文件?
编辑:(已解决)如果您的项目还不是那么大,请使用.NET Framework 3.5在Microsoft Visual Studio(MVS)中创建一个新项目,然后可以使用MonoDevelop打开它,否则编辑您的项目Debug/Release配置文件并删除有关此项目的"4.0"信息的所有内容,加上以前的.vbproj文件不起作用并执行相同操作,搜索4.0信息.(适用于框架4.0)
要么
按照此处的说明更改项目设置:http: //msdn.microsoft.com/en-us/library/bb398202.aspx
在我的archlinux系统上,我做了一个全新的安装:
当我调试应用程序时,调试器不会在断点上停止,即使不在System.Diagnostics.Debugger.Break ();代码上停止.
并显示错误窗口,并显示以下消息:
Could not connect to the debugger
Run Code Online (Sandbox Code Playgroud)
有谁知道如何修理它?
我正在移植一个包含许多项目的Visual Studio C#解决方案,并在Xamarin IDE中创建一个新的解决方案 - 所有这些都在Windows上.
我一次移植/重新创建一个项目,然后进行编译.我可以单独编译每个项目,然后我可以编译解决方案(有一些错误).
如果我尝试全部重建,则会出现问题,然后显示错误:
'Access to the path "[my build path\some.dll]" is denied.'
Run Code Online (Sandbox Code Playgroud)
我有完整的管理员权限,正如我所提到的,我最初可以构建dll,因此它不是访问问题.
如果我试图删除有问题的dll,我不能 - 窗口否认我.
如果我关闭Xamarin,我可以手动删除该文件.因此,我认为,Xamarin仍然对文件进行"锁定",不允许将其删除.
有没有人看过这个,如果有的话,你是怎么绕过它的?
如果这是一个错误,那么这使得它几乎无法使用.
我正在尝试使用新的Unity UI(2014)构建列表视图.垂直和可滚动列表应包含图像按钮,这些按钮应根据其指定的图像保留其纵横比!所有按钮都应拉伸到屏幕宽度.按钮不应与下一个按钮有间隙.(非常像iOS中的UITableView)

我发现新UI附带的VerticalLayoutGroup对我没有帮助,因为它不能很好地嵌入ScrollRect中.我认为它需要根据包含的项目进行调整,以使其与ScrollRect一起使用.
另一个问题是我无法让按钮保持其宽高比,我通过编写一个小脚本解决了这个问题(见下文).
为了实际完成所需的列表效果,我创建了一个带有ScrollRect的Canvas,然后包含一个用于我的自定义ListLayout脚本的RectTransform.RectTransforms的子节点是按钮.
结构如下所示:

列表中的每个项都会获得一个keep aspect脚本,如下所示:
public class KeepAspect : MonoBehaviour {
public Sprite sprite;
public float aspect = 1;
void Start() {
if (sprite != null) {
aspect = sprite.bounds.size.x / sprite.bounds.size.y;
}
}
void Update() {
RectTransform rectTransform = GetComponent<RectTransform>();
Rect rect = rectTransform.rect;
rectTransform.sizeDelta = new Vector2(rect.width, rect.width * (1f / aspect));
}
}
Run Code Online (Sandbox Code Playgroud)
我的自定义ListLayout脚本,根据包含的项目计算其高度:
public class ListLayout : MonoBehaviour {
public enum Direction { Vertical, Horizontal }
public Direction direction = Direction.Vertical;
public float …Run Code Online (Sandbox Code Playgroud) 我目前在mono官方网站上安装了mono-complete和monodevelop,并在下面输入了这些命令
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list sudo apt-get update
sudo apt-get install mono-complete
sudo apt-get install monodevelop
Run Code Online (Sandbox Code Playgroud)
在我的ubuntu 16.04上,但是当我打开monodevelop IDE并尝试创建一个新的解决方案时,找不到预期的asp.net模板,因此我不允许创建像asp.net mvc这样的web项目!我得到的唯一模板就是这个
之后,我从synaptic中删除了单声道包,并再次从ubuntu软件中心重新安装它,但我得到了相同的结果
当我运行sudo apt-get update时,这就是我在终端中得到的
W: gpgv:/var/lib/apt/lists/ppa.launchpad.net_ermshiperete_monodevelop-beta_ubuntu_dists_xenial_InRelease: The repository is insufficiently signed by key 6F242C166A1B440BA3C43CBD48B6803E839ECBBE (weak digest)
W: gpgv:/var/lib/apt/lists/download.mono-project.com_repo_debian_dists_wheezy_InRelease: The repository is insufficiently signed by key 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF (weak digest)
Run Code Online (Sandbox Code Playgroud) monodevelop ×10
c# ×6
xamarin.ios ×2
.net ×1
archlinux ×1
asp.net ×1
debugging ×1
iphone ×1
listview ×1
mono ×1
system.web ×1
ubuntu-16.04 ×1
warnings ×1
windows ×1
xamarin ×1